通過一個例子來分辨這些選擇器,首先做一個初始的頁面:
1、HTML
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>選擇器</title>
<script type="text/javascript" src="../JQuery庫文件/jquery-1.12.1.min.js"></script>
<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">
//給id為mover的元素添加動畫.
$("document").ready(function(){
function animateIt() {
$("#mover").slideToggle("slow", animateIt);
}
animateIt();
})
</script>
</head>
<body>
<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為text的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的diaplay為none的div
</div>
<div class="hide">class為hide的div</div>
<div>
包含input的type為“hidden”的div
<input type="hidden" size="8">
</div>
<span id="mover">正在執行動畫的span元素</span>
</body>
</html>
View Code
2、初始效果


eg:改變id為one的元素的背景顏色
首先在<head>處引入JQuery庫文件:
<script type="text/javascript" src="../JQuery庫文件/jquery-1.12.1.min.js"></script>
然後編輯JQuery代碼:
<!--編寫JQuery代碼-->
<script type="text/javascript">
$("document").ready(function(){
$("#one").css("background-color","#bbffaa"); //改變id為one的元素的背景顏色
})
</script>
效果圖:

!!!所有 jQuery 函數位於一個 document ready 函數中:
$(document).ready(function(){
});
這是為了防止文檔在完全加載(就緒)之前運行 jQuery 代碼。如果在文檔沒有完全加載之前就運行函數,操作可能失敗。!!!
<!--編寫JQuery代碼-->
<script type="text/javascript">
$("document").ready(function(){
$(".mini").css("background-color","#bbffaa"); //改變class為mini的所有元素的背景顏色
})
</script>
效果:

將代碼的關鍵語句改為:
$("div").css("background-color","#bbffaa"); //改變元素名是div的所有元素的背景顏色
效果圖:

$("*").css("background-color","#bbffaa"); //改變所有元素的背景顏色
效果圖:

eg:改變所有<span>元素和id為two的元素的背景顏色
$("span,#two").css("background-color","#bbffaa"); //改變所有<span>元素和id為two的元素的背景顏色
效果圖:


改變<body>內所有<div>的背景顏色:
<!--編寫JQuery代碼-->
<script type="text/javascript">
$("document").ready(function(){
$("body div").css("background-color","#bbffaa"); //改變<body>內所有<div>的背景顏色
})
</script>

改變<body>內子<div>元素的背景顏色:
$("body > div").css("background-color","#bbffaa"); //改變<body>內子<div>元素的背景顏色

改變class為one的下一個<div>同輩元素的背景色:(!!!下一個同輩元素,相當於next()方法)
$(".one + div").css("background-color","#bbffaa"); //改變class為one的下一個<div>同輩元素的背景色
也可以寫為:
$(".one").next("div").css("background-color","#bbffaa");

改變id為two的元素後面的所有<div>同輩元素的背景色:(!!!之後的所有同輩元素,相當於nextAll()方法)
$("#two ~ div").css("background-color","#bbffaa");
相當於:
$("#two").nextAll("div").css("background-color","#bbffaa");

過濾選擇器主要是通過特定的過濾規則來篩選出所需的DOM元素,過濾規則與CSS中的偽類選擇器語法相同,即選擇器都以一個冒號(:)開頭。

eg:
(1)改變第一個和最後一個<div>元素的背景色
<script type="text/javascript">
$("document").ready(function(){
$("div:first").css("background-color","#bbffaa");
$("div:last").css("background-color","#bbffaa");
})
</script>

(2)改變class不為one的<div>元素的背景色
$("div:not(.one)").css("background-color","#bbffaa");

(3)根據索引改變背景色(!!索引值從0開始!!)
$("document").ready(function(){
$("div:eq(3)").css("background-color","#bbffaa"); //改變索引值等於3的<div>元素的背景色
$("div:gt(3)").css("background-color","red"); //改變索引值小於3的<div>元素的背景色
$("div:lt(3)").css("background-color","blue"); //改變索引值大於3的<div>元素的背景色
})

(4)改變正在執行動畫的元素的背景色
$(":animated").css("background-color","#bbffaa"); //改變正在執行動畫的元素的背景色

(5)改變當前獲取焦點的元素的背景色
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>選擇器</title>
<script type="text/javascript" src="../JQuery庫文件/jquery-1.12.1.min.js"></script>
<script type="text/javascript">
$("document").ready(function(){
$("#button1").click(function(){
$(":focus").css("background-color","#bbffaa"); //改變當前獲取焦點的元素的背景色
})
})
</script>
</head>
<body>
<input type="button" value="改變當前獲取焦點的元素的背景色">
<input type="button" value="改變當前獲取焦點的元素的背景色" id="button1">
</body>
</html>
效果:


eg:
(1)改變含有class為mini元素的<div>元素的背景色
<script type="text/javascript">
$("document").ready(function(){
$("div:has('.mini')").css("background-color","#bbffaa"); //改變含有class為mini元素的<div>元素的背景色
})
</script>

(2)改變含有子元素(包括文本元素)的<div>元素的背景色
$("div:parent").css("background-color","#bbffaa"); //改變含有子元素(包括文本元素)的<div>元素的背景色


在可見性選擇器中,需要注意的是選擇器:hiddden,它不僅包括樣式屬性display為“none”的元素,也包括文本隱藏域(<input type="hidden"/>)和visibility:hidden之類的元素。

eg:
(1)改變含有屬性title的<div>元素的背景色
$("div[title]").css("background-color","#bbffaa"); //改變含有屬性title的<div>元素的背景色

(2)改變屬性title值等於“test”的<div>元素的背景色
$("div[title=test]").css("background-color","#bbffaa"); //改變屬性title值等於“test”的<div>元素的背景色

(3))改變屬性title值不等於“test”的<div>元素的背景色
$("div[title!=test]").css("background-color","#bbffaa"); //改變屬性title值不等於“test”的<div>元素的背景色

(4)改變屬性title值以te開始的<div>元素的背景色
$("div[title^=te]").css("background-color","#bbffaa"); //改變屬性title值以te開始的<div>元素的背景色

(5)改變屬性title值以est結束的<div>元素的背景色
$("div[title$=est]").css("background-color","#bbffaa"); //改變屬性title值以est結束的<div>元素的背景色

(6))改變屬性title值含有“es”的<div>元素的背景色
$("div[title*=es]").css("background-color","#bbffaa"); //改變屬性title值含有“es”的<div>元素的背景色

(7))改變含有屬性id,並且屬性title值含有“es”的<div>元素的背景色
$("div[id][title*=es]").css("background-color","#bbffaa"); //改變含有屬性id,並且屬性title值含有“es”的<div>元素的背景色


!!!這裡的index從1開始!!!
:nth-child()選擇器是很常用的子元素過濾選擇器,詳細功能如下:
(1):nth-child(even):選取每個父元素下的索引值是偶數的元素
(2):nth-child(odd):選取每個父元素下的索引值是奇數的元素
(3):nth-child(2):選取每個父元素下的索引值是2的元素
(4):nth-child(3n):選取每個父元素下的索引值是3的倍數的元素(n從1開始)
(5):nth-child(3n+1):選取每個父元素下的索引值是(3n+1)的元素(n從1開始)

重新設計一個表單頁面如下:

HTML代碼:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>選擇器</title>
<script type="text/javascript" src="../JQuery庫文件/jquery-1.12.1.min.js"></script>
<script type="text/javascript">
$("document").ready(function(){
})
</script>
</head>
<body>
<h3> 表單對象屬性過濾選擇器.</h3>
<form>
<!-- 測試的元素 -->
可用元素:<input name="add" value="可用文本框"/> <br/>
不可用元素:<input name="email" disabled="disabled" value="不可用文本框"/><br/>
可用元素: <input name="che" value="可用文本框" /><br/>
不可用元素:<input name="name" disabled="disabled" value="不可用文本框"/><br/>
<br/>
多選框:<br/>
<input type="checkbox" name="newsletter" checked="checked" value="test1" />test1
<input type="checkbox" name="newsletter" value="test2" />test2
<input type="checkbox" name="newsletter" value="test3" />test3
<input type="checkbox" name="newsletter" checked="checked" value="test4" />test4
<input type="checkbox" name="newsletter" value="test5" />test5
<div></div>
<br/><br/>
下拉列表1:<br/>
<select name="test" multiple="multiple" style="height:100px">
<option>浙江</option>
<option selected="selected">湖南</option>
<option>北京</option>
<option selected="selected">天津</option>
<option>廣州</option>
<option>湖北</option>
</select>
<br/><br/>
下拉列表2:<br/>
<select name="test2" >
<option>浙江</option>
<option>湖南</option>
<option selected="selected">北京</option>
<option>天津</option>
<option>廣州</option>
<option>湖北</option>
</select>
<div></div>
</form>
</body>
</html>
View Code
eg:
(1)改變表單內可用<input>元素的值
<script type="text/javascript">
$("document").ready(function(){
$("input:enabled").val("這裡變化了!!!");
})
</script>

(2)獲取多選框選中的個數
<script type="text/javascript">
$("document").ready(function(){
$(":checkbox").click(countChecked); //這裡的相關知識點在第四節會講到
function countChecked() {
var n = $("input:checked").length; //獲取多選框選中的個數
$("div").eq(0).html("<strong>有"+n+" 個被選中!</strong>"); //在第一個div處輸入結果
}
countChecked();//進入頁面就調用.
})
</script>
效果:

(3)獲取下拉框選中的內容
<script type="text/javascript">
$("document").ready(function(){
$("select").change(function () {
var str = "";
$("select :selected").each(function () {
str += $(this).text() + ",";
});
$("div").eq(1).html("<strong>你選中的是:"+str+"</strong>");
}).trigger('change');
// trigger('change') 在這裡的意思是:
// select加載後,馬上執行onchange.
// 也可以用.change()代替.
})
</script>


eg:獲得表單內表單元素的個數:
$(":input").length;