當我們想要操所頁面中的元素時,首先要做的就是選取元素。選取頁面中元素可以使用jQuery給我們提供的$()
方法,該方法需要提供選擇器作為引數,方法執行完成後會返回給我們一個jQuery物件,被選取的元素就包含在該物件中。
1.1基礎選擇器
選擇器 | 實列 | 說明 |
全域性選擇器 | $('*') | 選擇所有元素 |
標籤選擇器 | $('p') | 選擇所有的p元素 |
ID選擇器 | $('#top') | 選擇所有id 屬性值為top 的元素 |
class選擇器 | $('.box') | 選擇所有clss屬性值為top 的元素 |
多重選擇器 | $('div, p') | 選擇所有的div 元素和p 元素 |
2.2 按層次結構選取元素
選擇器 | 實列 | 說明 |
子代選擇器 | $('div > p') | 選擇作為div 元素子元素的所有p 元素 |
後代選擇器 | $('div p') | 選擇作為div 後代的所有p 元素 |
相鄰選擇器 | $('div + p' | 選擇緊鄰div 元素且位於其後的p 元素 |
兄弟選擇器 | $('div ~ p') | 選擇作為div 元素且位於其後的所有p 元素 |
2.3 使用屬性選擇元素
選擇器 | 實列 | 說明 |
tag[attr] | $('p[class]') | 選擇所有帶有class 屬性的p 元素 |
tag[attr="value"] | $('p[class="top"]') | 選擇所有class 屬性值恰好等於top 的p 元素 |
tag[attr^="value"] | $('p[class^="top"]') | 選擇所有class屬性值以top開頭的P元素(包括class等於top的p元素) |
tag[attr$="value"] | $('p[class$="top"]') | 選擇所有class 屬性值以top 結尾的p 元素(包括class 屬性值恰好等於top 的p 元素) |
tag[attr!="value"] | $('p[class!="top"]') | 選擇所有class 屬性值不等於top 的p 元素 |
tag[attr*="value"] | $('p[class*="top"]') | 選擇所有class 屬性值中包含字串top 的p 元素(包括class 屬性值恰好等於top 的p 元素) |
tag[attr|="value"] | $('p[class|="top"]') | 選擇所有class 屬性值為連線符分隔的字串並且該字串以top 開頭的p 元素和class 屬性值恰好等於top 的p 元素 |
tag[attr~="value"] | $('p[class~="top"]') | 選擇所有class 屬性值為空格分隔的多個字串且其中一個字串等於top 的p 元素和class 屬性值恰好等於top 的p 元素 |
tag[attr="value"]... | $('p[class="top"][id]') | 選擇所有class 屬性值恰好等於top 並且帶有id 屬性的p 元素 |
<p class="center" id="p1">段落內容1</p> <p class="center right">段落內容2</p> <p class="left center right">段落內容3</p> <p class="center-right">段落內容4</p> <p class="left-center">段落內容5</p> <p class="left-center-right">段落內容6</p>
// 1. 選擇帶有Class屬性的所有p元素 var $p1 = $('p[class]'); // 2. 選擇class屬性值恰好等於center的p元素 var $p2 = $('p[class="center"]'); // 3. 選擇class屬性值以center開始的p元素和class屬性值恰好等於center的p元素 var $p3 = $('p[class^="center"]'); // 4. 選擇Class屬性值以center結尾的p元素和class屬性值恰好等於center的p元素 var $p4 = $('p[class$="center"]'); // 5. 選擇Class屬性不等於center的p元素 var $p5 = $('p[class!="center"]'); // 6. 選擇Class屬性值中包含center字串的p元素和class屬性值恰好等於center的p元素 var $p6 = $('p[class*="center"]'); // 7. 選擇所有class屬性值為連線符分隔的字串並且該字串以center開頭的p元素和class屬性值恰好等於center的p元素 var $p7 = $('p[class|="center"]'); // 8. 選擇所有class屬性值為空格分隔的多個字串且其中一個字串等於center的p元素和class屬性值恰好等於center的p元素 var $p8 = $('p[class~="center"]'); // 9. 選擇所有class屬性值恰好等於center並且id屬性值恰好等於的p1元素 var $p9 = $('p[class="center"][id="p1"]');
2.4基礎過濾器
選擇器 | 實列 | 說明 |
:firs | $('li:first') | 選擇匹配元素集合中第一個li元素 |
:last | $('li:last') | 選擇匹配元素集合中最後一個li元素 |
:even | $('li:even') | 選擇匹配元素集合中偶數位的li元素 |
:odd | $('li:odd') | 選擇匹配元素集合中奇數位的li元素 |
:eq(n) | $('eq(3)') | 選擇匹配元素集合中索引等於3的li元素 |
:gt(n) | $('gt(3)') | 選擇匹配元素集合中索引大於3的li元素 |
:lt(n) | $('lt(3)') | 選擇匹配元素集合中索引小於3的li元素 |
:root | $(':root') | 選擇文件的根元素 |
:header | $(':header') | 選擇所有的標題元素(h1-h6) |
:lang(language) | $('div:lang(en-us)') | 選取指定的語言元素 |
:not(selector) | $('a:not(.active)') | 選擇不匹配.active 選擇器的a 元素 |
:target | $(':target') | 選擇處於目標狀態的元素(錨連結目標元素) |
:hidden | $(':hidden') | 選擇處於隱藏的狀態 |
:visible | $(':visible') | 選擇處於可見狀態的元素。 |
:animated | $(':animated') | 選取正在應用動畫效果的元素(只對通過jq方法新增動畫有效) |
2.5子元素過濾器
選擇器 | 示例 | 說明 |
---|---|---|
tag:first-child |
$('div p:first-child') |
選擇作為其父元素第一個子元素的p 元素 |
tag:last-child |
$('div p:last-child') |
選擇作為其父元素最後一個子元素的p 元素 |
tag:first-of-type |
$('p:first-of-type') |
選擇幾個同輩p 元素中的第一個 |
tag:last-of-type |
$('p:last-of-type') |
選擇幾個同輩p 元素中的最後一個 |
tag:nth-child(n) |
$('p:nth-child(2)') |
選擇作為其父元素正數第2 個子元素的所有p 元素 |
tag:nth-last-child(n) |
$('p:nth-last-child(2)') |
選擇作為其父元素倒數第2 個子元素的所有p 元素 |
tag:nth-of-type(n) |
$('p:nth-of-type(1)') |
選擇幾個同輩p 元素中的正數第1 個 |
tag:nth-last-of-type(n) |
$('p:nth-last-of-type(1)') |
選擇幾個同輩p 元素中的倒數第1 個 |
tag:only-child |
$('p:only-child') |
選擇作為其父元素唯一子元素的p 元素 |
tag:only-of-type |
$('p:only-of-type') |
選擇同輩元素中唯一一個標籤為p 的元素 |
提示:tag:nth-child(n),tag:nth-last-child(n)和tag:nth-of-type(n)中的n可以替換成even|odd,或者表示式,比如:Xn+Y。
2.6 內容過濾器
選擇器 | 示例 | 說明 |
---|---|---|
tag:contain(text) |
$('div:contain("hello")') |
選擇匹配元素集合中包含指定文字的所有div 元素 |
tag:empty |
$('div:empty') |
選擇所有沒有子元素的div 元素(包括文字節點) |
tag:has(selector) |
$('div:has(p)') |
選擇所有子元素中包含p 元素的div 元素 |
tag:parent |
$('div:parent') |
選擇匹配元素集合中包含子元素的所有div 元素(包括文字節點) |
2.7 選取表單元素
jQuery提供了一些專門為表單設計的選擇器,用於快速訪問表單元素。
選擇器 | 示例 | 說明 |
---|---|---|
:text |
$(':text ') |
選擇所有文字欄位(type="text" ,或沒有寫type 屬性的input 元素) |
:password |
$(':password') |
選擇所有密碼欄位(type="password" ) |
:submit |
$(':submit ') |
選擇所有提交按鈕(type="submit" ) |
:reset |
$(':reset ') |
選擇所有重置按鈕(type="reset" ,)選取type型別為reset的button元素 |
:button |
$(':button ') |
選擇所有其他按鈕(type="button" ) |
:checkbox |
$(':checkbox') |
選擇所有核取按鈕(type="checkbox" ) |
:radio |
$(':radio ') |
選擇所有單選按鈕(type="radio" ) |
:file |
$(':file ') |
選取type型別為file的input元素 |
:image |
$(':image ') |
選擇所有圖片按鈕(type="image" ) |
:input |
$(':input ') |
選擇所有的表單元素(input,select,textarea,button ) |
:enabled |
$(':enabled ') |
選擇處於可用狀態的元素 |
:disabled |
$(':disabled ') |
選擇處於不可用狀態的元素(button, input, optgroup, option, select, textarea ) |
:selected |
$(':selected') |
選擇處於被選中狀態的option 元素 |
:focus |
$(':focus ') |
選擇處於焦點狀態的元素 |
:checked |
$(':checked ') |
選擇處於選中狀態的checkbox ,radio ,option 元素 |
6. 使用context提高檢索效率
先前我們選取頁面中的元素時,不可避免的要檢索頁面中的所有元素,這樣就降低了檢索的效率。這不是我們想要的,能不能在我們指定的的範圍中檢索我們想要獲取的元素。
下面的選擇器會在id屬性值為box的元素中查詢p元素,而不是在整個文件中查詢:
$('p', '#box')
後代選擇器也可以像上面那樣寫:
$('#box p')
// 等價於
$('p', '#box')