1. 程式人生 > >一步一步學習 JQuery (三) 過濾選擇器:基本過濾選擇器 && 內容過濾選擇器 && 可見性過濾選擇器

一步一步學習 JQuery (三) 過濾選擇器:基本過濾選擇器 && 內容過濾選擇器 && 可見性過濾選擇器

過濾選擇器

過濾選擇器主要是通過特定的過濾規則來篩選出所需的 DOM 元素, 該選擇器都以 “:” 開頭
按照不同的過濾規則, 過濾選擇器可以分為基本過濾, 內容過濾, 可見性過濾, 屬性過濾, 子元素過濾和表單物件屬性過濾選擇器.

一、基本過濾選擇器


改變第一個 div 元素的背景色為 # bbffaa
改變最後一個 div 元素的背景色為 # bbffaa
改變class不為 one 的所有 div 元素的背景色為 # bbffaa
改變索引值為偶數的 div 元素的背景色為 # bbffaa
改變索引值為奇數的 div 元素的背景色為 # bbffaa
改變索引值為大於 3 的 div 元素的背景色為 # bbffaa
改變索引值為等於 3 的 div 元素的背景色為 # bbffaa
改變索引值為小於 3 的 div 元素的背景色為 # bbffaa
改變所有的標題元素的背景色為 # bbffaa
改變當前正在執行動畫的所有元素的背景色為 # bbffaa

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<link rel="stylesheet" type="text/css" href="css/style.css">
		<style type="text/css">
			div, span, p {
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}
			
			div.mini {
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}
			
			div.hide {
			    display: none;
			}			
		</style>
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				function anmateIt(){
					$("#mover").slideToggle("slow", anmateIt);
				}
				anmateIt();
				
				$("#btn1").click(function(){
					$("div:first").css("background","#ffddaa");
				})
				
				$("#btn2").click(function(){
					$("div:last").css("background","#ffddaa");
				})
				
				$("#btn3").click(function(){
					$("div:not(.one)").css("background","#ffddaa");
				})
				
				$("#btn4").click(function(){
					$("div:even").css("background","#ffddaa");
				})
				
				$("#btn5").click(function(){
					$("div:odd").css("background","#ffddaa");
				})
				
				$("#btn6").click(function(){
					$("div:gt(3)").css("background","#ffddaa");
				})
				
				$("#btn7").click(function(){
					$("div:eq(3)").css("background","#ffddaa");
				})
				
				$("#btn8").click(function(){
					$("div:lt(3)").css("background","#ffddaa");
				})
				
				$("#btn9").click(function(){
					$(":header").css("background","#ffddaa");
				})
				
				
				$("#btn10").click(function(){
					$(":animated").css("background","#ffddaa");
				})
				
				
				$("#btn11").click(function(){
					$("#two").nextAll("span:first").css("background","#ffddaa");
				})
				
				
			});
			
			
		</script>
	</head>
	<body>		
		<input type="button" value="選擇第一個 div 元素" id="btn1" />
		<input type="button" value="選擇最後一個 div 元素" id="btn2" />
		<input type="button" value="選擇class不為 one 的所有 div 元素" id="btn3" />
		
		<input type="button" value="選擇索引值為偶數的 div 元素" id="btn4" />
		<input type="button" value="選擇索引值為奇數的 div 元素" id="btn5" />
		<input type="button" value="選擇索引值為大於 3 的 div 元素" id="btn6" />
		
		<input type="button" value="選擇索引值為等於 3 的 div 元素" id="btn7" />
		<input type="button" value="選擇索引值為小於 3 的 div 元素" id="btn8" />
		<input type="button" value="選擇所有的標題元素" id="btn9" />
		
		<input type="button" value="選擇當前正在執行動畫的所有元素" id="btn10" />
		<input type="button" value="選擇 id 為 two 的下一個 span 元素" id="btn11" />
		
		<h3>基本選擇器.</h3>
		<br><br>
		<div class="one" id="one">
			id 為 one,class 為 one 的div
			<div class="mini">class為mini</div>
		</div>
		<div class="one" id="two" title="test">
			id為two,class為one,title為test的div
			<div class="mini" title="other">class為mini,title為other</div>
			<div class="mini" title="test">class為mini,title為test</div>
		</div>
		<div class="one">
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini" title="tesst">class為mini,title為tesst</div>
		</div>
		<div style="display:none;" class="none">style的display為"none"的div</div>
		<div class="hide">class為"hide"的div</div>
		<div>
			包含input的type為"hidden"的div<input type="hidden" size="8">
		</div>
		<span id="span">^^span元素 111^^</span>
		<span id="span">^^span元素 222^^</span>
		<div id="mover">正在執行動畫的div元素.</div>
	</body>
</html>
二、內容過濾選擇器

內容過濾選擇器的過濾規則主要體現在它所包含的子元素和文字內容上

改變含有文字 ‘di’ 的 div 元素的背景色為 # bbffaa
改變不包含子元素(或者文字元素) 的 div 空元素的背景色為 # bbffaa
改變含有 class 為 mini 元素的 div 元素的背景色為 # bbffaa
改變含有子元素(或者文字元素)的div元素的背景色為 # bbffaa

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<link rel="stylesheet" type="text/css" href="css/style.css">
		<style type="text/css">
			div, span, p {
			    width: 140px;
			    height: 140px;
			    margin: 5px;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}
			
			div.mini {
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}
			
			div.hide {
			    display: none;
			}			
		</style>
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				
				$("#btn1").click(function(){
					$("div:contains('di')").css("background","#ffddaa");
				});
				
				$("#btn2").click(function(){
					$("div:empty").css("background","#ffddaa");
				});
				
				$("#btn3").click(function(){
					$("div:has(.mini)").css("background","#ffddaa");
				});
				
				$("#btn4").click(function(){
					$("div:parent").css("background","#ffddaa");
					8//$("div:not(:empty)").css("background","#ffddaa");
				});
			});
			
		</script>
	</head>
	<body>		
		<input type="button" value="選擇 含有文字 'di' 的 div 元素" id="btn1" />
		<input type="button" value="選擇不包含子元素(或者文字元素) 的 div 空元素" id="btn2" />
		<input type="button" value="選擇含有 class 為 mini 元素的 div 元素" id="btn3" />
		<input type="button" value="選擇含有子元素(或者文字元素)的div元素" id="btn4" />
		
		<br><br>
		<div class="one" id="one">
			id 為 one,class 為 one 的div
			<div class="mini">class為mini</div>
		</div>
		<div class="one" id="two" title="test">
			id為two,class為one,title為test的div
			<div class="mini" title="other">class為mini,title為other</div>
			<div class="mini" title="test">class為mini,title為test</div>
		</div>
		<div class="one">
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini" title="tesst">class為mini,title為tesst</div>
		</div>
		<div style="display:none;" class="none">style的display為"none"的div</div>
		<div class="hide">class為"hide"的div</div>
		<div>
			包含input的type為"hidden"的div<input type="hidden" size="8">
		</div>
		<div id="mover">正在執行動畫的div元素.</div>
	</body>
</html>
三、可見性過濾選擇器
可見性過濾選擇器是根據元素的可見和不可見狀態來選擇相應的元素

可見選擇器 :hidden 不僅包含樣式屬性 display 為 none 的元素, 也包含文字隱藏域 (<input  type=“hidden”>)和 visible:hidden 之類的元素

改變所有可見的div元素的背景色為 # bbffaa
選取所有不可見的元素, 利用 jQuery 中的 show() 方法將它們顯示出來, 並設定其背景色為 # bbffaa
選取所有的文字隱藏域, 並列印它們的值

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<link rel="stylesheet" type="text/css" href="css/style.css">
				<style type="text/css">
			div, span, p {
			    width: 140px;
			    height: 140px;
			    margin: 5pax;
			    background: #aaa;
			    border: #000 1px solid;
			    float: left;
			    font-size: 17px;
			    font-family: Verdana;
			}
			
			div.mini {
			    width: 55px;
			    height: 55px;
			    background-color: #aaa;
			    font-size: 12px;
			}
			
			div.hide {
			    display: none;
			}			
		</style>
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script type="text/javascript">
			$(document).ready(function(){
				
				$("#btn1").click(function(){
					$("div:visible").css("background","#ffddaa");
				});
				
				$("#btn2").click(function(){
					//alert($("div:hidden").length);
					//show(time): 可以使不可見的元素變為可見, time 表示時間
					//jQuery 的很多方法支援方法的連綴, 即一個方法的返回值來時呼叫該
					//方法的 jQuery 物件: 可以繼續呼叫該物件的其他方法. 
					$("div:hidden").show(3000).css("background","#ffddaa");
				});
				
				$("#btn3").click(function(){
					alert($("input:hidden").val());
				});
					
			});
			
		</script>
	</head>
	<body>		
		<input type="button" value="選取所有可見的  div 元素" id="btn1">
		<input type="button" value="選擇所有不可見的 div 元素" id="btn2" />
		<input type="button" value="選擇所有不可見的 input 元素" id="btn3" />
		
		<br><br>
		<div class="one" id="one">
			id 為 one,class 為 one 的div
			<div class="mini">class為mini</div>
		</div>
		<div class="one" id="two" title="test">
			id為two,class為one,title為test的div
			<div class="mini" title="other">class為mini,title為other</div>
			<div class="mini" title="test">class為mini,title為test</div>
		</div>
		<div class="one">
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini"></div>
		</div>
		<div class="one">
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini">class為mini</div>
			<div class="mini" title="tesst">class為mini,title為tesst</div>
		</div>
		<div style="display:none;" class="none">style的display為"none"的div</div>
		<div class="hide">class為"hide"的div</div>
		<div>
			包含input的type為"hidden"的div
			<input type="hidden" value="123456789000" size="8">
		</div>
		<div id="mover">正在執行動畫的div元素.</div>
	</body>
</html>