jQuery選擇器支持CSS1艺玲、CSS2的全部和部分CSS3選擇器括蝠,同時(shí)也擁有少量獨(dú)有的選擇器。jQueryt選擇器分為基本選擇器饭聚、層次選擇器忌警、過(guò)濾選擇器和表單選擇器。為了練習(xí)先寫(xiě)一個(gè)html頁(yè)面秒梳。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery selector</title>
<script type="text/javascript" src="jQuery/jquery-3.1.0.js"></script>
<style type="text/css">
div, span, p{
width:140px;
height: 140px;
margin: 5px;
background-color: #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">
$(document).ready(function(){
});
</script>
</head>
<body>
<h1>選擇器</h1>
<div class="one" id="one">
id為one,class為one的div
<div class="mini">class為mini</div>
</div>
<div class="two" id="two" title="test">
id為tow,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="test">class為mini,title為test</div>
</div>
<div style="display:none" class="one">
style的display為"one"的div
</div>
<div class="hide">class為hide的div</div>
<div>
包含input的type為"hidden"的div<input type="hidden" size="8" />
</div>
<span id="mover">正在執(zhí)行動(dòng)畫(huà)的span</span>
</body>
</html>
基本選擇器
下面講各個(gè)選擇器法绵,并寫(xiě)出示例代碼,添加到ready函數(shù)中并在瀏覽器中看看效果酪碘。
id選擇器:$("#test")朋譬,選取id為test的元素,返回單個(gè)元素
$("#one").css("background", "#bbffaa");//改變id為one的元素的背景色
.class選擇器:$(".test")選取所有class為test的元素兴垦,返回集合元素
$(".mini").css("background", "#bbffaa");//改變class為mini的所有元素的背景色
element選擇器:$("p"),選取所有的<p>元素此熬,返回集合元素
$("div").css("background", "#bbffaa");//改變?cè)孛麨?lt;div>的所有元素的背景色
選擇器:$(""),選擇所有元素,返回集合元素
$("*").css("background", "#bbffaa");//改變所有元素的背景色
selector1,selector2,......,selectorN選擇器:$("div,span,p.myClass")選取所有<div>,<span>和擁有class為myClass的<p>標(biāo)簽的一組元素滑进,返回集合元素
$("span, #two").css("background", "#bbffaa");//改變所有的<span>元素和id為two的元素的背景色
層次選擇器
如果想通過(guò)DOM元素之間的層次關(guān)系來(lái)獲取特定的元素犀忱,例如后代元素、子元素扶关、相鄰元素和同輩元素等阴汇,那么層次選擇器是一個(gè)非常好的選擇。
$("ancestor descendent"),選取ancestor元素里的所有descendent(后代)元素节槐,返回集合元素
$("body div").css("background", "#bbffaa");//改變body內(nèi)所有div元素的背景色
$("parent>child"),選取parent元素下的child(子)元素搀庶,與前一個(gè)選擇器有區(qū)別拐纱,前一個(gè)選擇器選擇的是后代元素,返回集合元素
$("body > div").css("background", "#bbffaa");//改變body內(nèi)子<div>元素的背景色
$("prev + next"),選取緊接在prev元素后的next元素,返回集合元素
$(".one + div").css("background", "#bbffaa");//改變class為one的下一同輩<div>元素的背景色
$("prev~siblings")哥倔,選取prev元素之后的所有silibings元素秸架,返回集合元素
$("#two ~ div").css("background", "#bbffaa");//改變id為two元素之后所有同輩元div元素的背景色
在層次選擇器中,第1咆蒿、2個(gè)選擇器比較常用东抹,面后面2個(gè)因?yàn)樵趈Query里可以使用更簡(jiǎn)單的方法替代,比較少用沃测。$(".one + div")與$(".one").next("div")等價(jià)缭黔;$("#prev ~ div")與$("#prev").nextAll("div");等價(jià)
過(guò)濾選擇器
過(guò)濾選擇器可以分為基本過(guò)濾、內(nèi)容過(guò)濾蒂破、可見(jiàn)性過(guò)濾馏谨、屬性過(guò)濾、子元素過(guò)濾和表單對(duì)象屬性過(guò)濾選擇器
基本過(guò)濾
:first,選取第1個(gè)元素附迷,返回單個(gè)元素
$("div:first").css("background", "#bbffaa");//改變第一個(gè)div元素的背景色
:last,選取最后一個(gè)元素惧互,返回單個(gè)元素
$("div:last").css("background", "#bbffaa");//改變 變最一一個(gè)div元素的背景色
:not(selector),卻除所有與給定遠(yuǎn)擇器匹配的元素
$("div:not(.one)").css("background", "#bbffaa");//改變class不為one的div元素的背景色
:even喇伯,選取索引值是偶數(shù)的所有元素壹哺,索引從0開(kāi)始
$("div:even").css("background", "#bbffaa");//改變索引值為偶數(shù)的div元素的背景色
:odd,選取索引值是奇數(shù)的所有元素艘刚,索引從0開(kāi)始
$("div:odd").css("background", "#bbffaa");//改變索引值為奇數(shù)的div元素的背景色
:eq(index)管宵,選取索引值等于index的元素
$("div:eq(3)").css("background","#bbffaa");//改變索引值為3的div元素的背景色
:gt(index),選取索引值大于index的元素
$("div:gt(3)").css("background","#bbffaa");//改變索引值大于3的div元素的背景色
:lt(index),選取索引值小于index的元素
$("div:lt(3)").css("background","#bbffaa");//改變索引值小于3的div元素的背景色
:header攀甚,選取所有的標(biāo)題元素箩朴,便如h1,h2,h3等
$(":header").css("background","#bbffaa");//改變所有標(biāo)題元素的背景色
:animated,選取當(dāng)前正在執(zhí)行動(dòng)畫(huà)的所有元素
$(":animated").css("background","#bbffaa");//改變所有正在執(zhí)行動(dòng)畫(huà)的元素的背景色
:focus秋度,選取當(dāng)前獲取焦點(diǎn)的元素
$(":focus").css("background","#bbffaa");//改變當(dāng)前獲取焦點(diǎn)的元素的背景色
內(nèi)容過(guò)濾
:contains(text),選取含有文本內(nèi)容為"text"的元素
$("div:contains(di)").css("background", "#bbffaa");//改變含有文本"di"的div元素的背景色
:empty炸庞,選取不包含子元素或者文本的空元素
$("div:empty").css("background", "#bbffaa");//改變不包含子元素(包括文本元素)的div元素的背景色
:has(selector),選取含有選擇器所匹配的元素的元素
$("div:has('.mini')").css("background", "#bbffaa");//改變含有class為mini元素的div元素的背景色
:parent荚斯,選取含有子元素或者文本元素的元素
$("div:parent").css("background", "#bbffaa");//改變含有子元素(包括文本元素)的div元素背景色
屬性過(guò)濾
[attribute]埠居,選取擁有此屬性的元素
$("div[title]").css("background", "#bbffaa");//改變含有屬性title的div元素的背景色
[attribute=value],選取屬性的值為value的元素
$("div[title=test]").css("background", "#bbffaa");//改變title屬性值等于"test"的div元屬的背景色
[attribute!=value]事期,選取屬性的值不等于value的元素
$("div[title!=test]").css("background", "#bbffaa");//改變title屬性值不等于"test"的div元屬背景色
[attribute^=value]滥壕,選取屬性的值以value開(kāi)始的元素
$("div[title^=te]").css("background", "#bbffaa");//改變屬性title值以"te"開(kāi)始的所有div元素背景色
[attribute$=value],選取屬性的值以value結(jié)束的元素
$("div[title$=est]").css("background", "#bbffaa");//改變屬性title值以"est"結(jié)尾的所有div元素背景色
[attribute*=value]兽泣,選取屬性的值含有value的元素
$("div[title*=es]").css("background", "#bbffaa");//改變屬性title值包含"es"的div元素的背景色
[attribute|=value]绎橘,選取屬性等于給定字符串或以該字符串為前綴(該字符后跟一個(gè)連字符“-”)的元素
[attribute~=value],選取屬性用空格分隔的值中包含一個(gè)給定值的元素
[attribute1][attribute2][attributeN]唠倦,用屬性選擇器并成一個(gè)復(fù)合屬性選擇器称鳞,滿足多個(gè)條件的元素
$("div[id][title*=es]").css("background", "#bbffaa");//改變含有屬性id且屬性title值含有"es"的div元素的背景色
可見(jiàn)性過(guò)濾
:hidden涮较,選取所有不可見(jiàn)的元素
$("div:hidden").show(3000);//顯示隱藏的div元素
:visible,選取所有可見(jiàn)的元素
$("div:visible").css("background", "#ff6500");//改變所有可見(jiàn)的div元素的背景色
子元素過(guò)濾
:nth-chile(index/even/odd/equation)冈止,選取每個(gè)父元素下的第index個(gè)子元素或者奇偶元素(index從1開(kāi)始算起狂票。詳細(xì)功能如下:
- :nth-child(even)能選取每個(gè)父元素下的索引值是偶數(shù)的元素
- :nth-child(odd)能選取每個(gè)父元素下索引值是奇數(shù)的元素
- :nth-child(2)能選取每個(gè)父元素下索引值等于2的元素
- :nth-child(3n)能選取每個(gè)父元素下的索引值是3的倍數(shù)的元數(shù),n從1開(kāi)始
- :nth-child(3n+1)能選取每個(gè)父元素下的索引值是3n+1的元素,n從1開(kāi)始
$("div.one :nth-child(2)").css("background", "#bbffaa");//改變每個(gè)class為one的div父元素下的第2個(gè)子元素的背景色
:first-child熙暴,選取父元素的第1個(gè)子元素
$("div.one :first-child").css("background", "#bbffaa");//改變每個(gè)class為one的div父元素下的第1個(gè)子元素的背景色
:last-child 選取每個(gè)父元素的最后一個(gè)子元素
$("div.one :last-child").css("background", "#bbffaa");//改變每個(gè)class為one的div父元素下的最后1個(gè)子元素的背景色
:only-child闺属,如果某個(gè)元素是它父元素中惟一的子元素,那么將會(huì)匹配怨咪,如果父元素中含有其他元素屋剑,剛不會(huì)被匹配
$("div.one :only-child").css("background", "#bbffaa");//改變每個(gè)class為one的div父元素只有一個(gè)子元素润匙,則改變背景色
表單對(duì)象屬性過(guò)濾
這個(gè)選擇器主要是對(duì)所選擇的表單元素進(jìn)行過(guò)濾诗眨。
為了學(xué)習(xí)表單對(duì)象屬性過(guò)濾選擇器需要新建一個(gè)html頁(yè)面包含表單
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>表單對(duì)象屬性過(guò)濾選擇器</title>
</head>
<body>
<form action="#" id="form1">
可用元素:<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>
</form>
</body>
</html>
:enabled,選取所有可用元素
:disabled孕讳,選取所有不可用元素
:checked匠楚,選取所有被選中的元素(單選框,復(fù)選框)
:selected厂财,選取所有被選中的選項(xiàng)元素(下拉列表)
表單選擇器
:input 選取所有的<input>,<textarea>,<select>,<button>元素
:text 先取所有單行文本框
:password 選取所有密碼框
:radio 選取所有單選框
:checkbox 選取所有多選框
:submit 選取所有拉交按鈕
:image 選取所有的圖像按鈕
:reset 選取所有的重置按鈕
:button 選取所有的按鈕
:file 選取所有上傳域
:hidden 選取所有不可見(jiàn)的元素(已經(jīng)在不可見(jiàn)性過(guò)濾選擇器中講過(guò))