1. 程式人生 > >一步一步學習 JQuery (二) 選擇器: 基本選擇器 && 層次選擇器

一步一步學習 JQuery (二) 選擇器: 基本選擇器 && 層次選擇器

選擇器是 jQuery 的根基, 在 jQuery 中, 對事件處理, 遍歷 DOM 和 Ajax 操作都依賴於選擇器
jQuery 選擇器的優點:

簡潔的寫法

                   

完善的事件處理機制


一、基本選擇器

基本選擇器是 jQuery 中最常用的選擇器, 也是最簡單的選擇器, 它通過元素 id, class 和標籤名來查詢 DOM 元素(在網頁中 id 只能使用一次, class 允許重複使用).


改變 id 為 one 的元素的背景色為 # bbffaa
改變 class 為 mini 的所有元素的背景色為 # bbffaa
改變元素名為 <div> 的所有元素的背景色為 # bbffaa
改變所有元素的背景色為 # bbffaa
改變所有的<span>元素和 id 為 two 的元素的背景色為 # bbffaa

示例:

<!DOCTYPE HTML>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Untitled Document</title>
		<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>
		
		<!-- 匯入 jQuery 庫 -->
		<script type="text/javascript" src="jquery-1.9.1.js"></script>
		<script type="text/javascript">
			
			$(function(){
				//點選ID為btn1 按鈕,點亮 ID 為 one 的DIV區域
				$("#btn1").click(function(){
					$("#one").css("background","#ffeeaa");//css() 更改 其css 屬性值 的函式
				});
				$("#btn2").click(function(){
					$(".mini").css("background","#ffeeaa");//css() 更改 其css 屬性值 的函式
				});
				$("#btn3").click(function(){
					$("div").css("background","#ffeeaa");//css() 更改 其css 屬性值 的函式
				});
				$("#btn4").click(function(){
					$("*").css("background","#ffeeaa");//css() 更改 其css 屬性值 的函式
				});
				$("#btn5").click(function(){
					$("span,#two").css("background","#ffeeaa");//css() 更改 其css 屬性值 的函式
				});
			})
		
		</script>
		
	</head>
	<body>		
		<input type="button" value="選擇 id 為 one 的元素" id="btn1" />
		<input type="button" value="選擇 class 為 mini 的所有元素" id="btn2" />
		<input type="button" value="選擇 元素名是 div 的所有元素" id="btn3" />
		<input type="button" value="選擇 所有的元素" id="btn4" />
		<input type="button" value="選擇 所有的 span 元素和id為two的元素" id="btn5" />
		
		<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元素^^</span>
	</body>
</html>

二、層次選擇器

如果想通過 DOM 元素之間的層次關係來獲取特定元素, 例如後代元素, 子元素, 相鄰元素, 兄弟元素等, 則需要使用層次選擇器.

注意:  (“prev ~ div”) 選擇器只能選擇 “# prev ” 元素後面的同輩元素; 而 jQuery 中的方法 siblings() 與前後位置無關, 只要是同輩節點就可以選取

改變 <body> 內所有 <div> 的背景色為 # bbffaa
改變 <body> 內子 <div> 的背景色為 # bbffaa
改變 id 為 one 的下一個 <div> 的背景色為 # bbffaa
改變 id 為 two 的元素後面的所有兄弟<div>的元素的背景色為 # bbffaa
改變 id 為 two 的元素所有 <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>
		<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">
		
			$(function(){
				
				$("#btn1").click(function(){
					$("body div").css("background","#ffddaa");
				});
				//只選擇孩子,孫子不算
				$("#btn2").click(function(){
					$("body > div").css("background","#ffddaa");
				});
				$("#btn3").click(function(){
					$("#one + div").css("background","#ffddaa");//必須直接相鄰
				});
				$("#btn4").click(function(){
					$("#two ~ div").css("background","#ffddaa");
				});
				$("#btn5").click(function(){
					$("#two").sibling("div").css("background","#ffddaa");
				});
				$("#btn6").click(function(){
					//$("#one + span").css("background", "#ffbbaa");無效因為span 不與one直接相鄰
					$("#one").nextAll("span:first").css("background","#ffddaa");
				});
				$("#btn7").click(function(){
					$("#two").prevAll("div").css("background","#ffddaa");
				});
			})
		
		</script>
	</head>
	<body>		
		<input type="button" value="選擇 body 內的所有 div 元素" id="btn1" />
		<input type="button" value="在 body 內, 選擇子元素是 div 的." id="btn2" />
		<input type="button" value="選擇 id 為 one 的下一個 div 元素" id="btn3" />
		<input type="button" value="選擇 id 為 two 的元素後面的所有 div 兄弟元素" id="btn4" />
		<input type="button" value="選擇 id 為 two 的元素所有 div 兄弟元素" id="btn5" />
		<input type="button" value="選擇 id 為 one 的下一個 span 元素" id="btn6" />
		<input type="button" value="選擇 id 為 two 的元素前邊的所有的 div 兄弟元素" id="btn7" />
		
		<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元素^^</span>
		<span id="span">--span元素--</span>
	</body>
</html>