通俗的講, Selector選擇器就是”一個表示特殊語義的字符串”. 只要把選擇器字符串傳入上面的方法中就能夠選擇不同的Dom對象並且以jQuery包裝集的形式返回.
但是如何將jQuery選擇器分類讓我犯錯. 因為書上的分類和jQuery官方的分類截然不同. 最後我決定以實用為主, 暫時不去了解CSS3選擇器標準, 而按照jQuery官方的分類進行講解.
jQuery的選擇器支援CSS3選擇器標準. 以下是W3C最新的CSS3選擇器標準:
http://www.w3.org/TR/css3-selectors/
標準中的選擇器都可以在jQuery中使用.
jQuery選擇器按照功能主要分為”選擇”和”過濾”. 並且是配合使用的. 可以同時使用組合成一個選擇器字符串. 主要的區別是”過濾”作用的選擇器是指定條件從前面匹配的內容中篩選, “過濾”選擇器也可以單獨使用, 表示從全部”*”中篩選. 例如:
$(“:[title]”)
等同於:
$ (“*:[title]”)
而” 選擇”功能的選擇器則不會有預設的範圍, 因為作用是”選擇”而不是”過濾”.
下面的選擇器分類中, 帶有”過濾器”的分類表示是”過濾”選擇器, 否則就是”選擇”功能的選擇器.
jQuery選擇器分為如下幾類:
[說明]
1. 點擊”名稱”會跳轉到此方法的jQuery官方說明文檔.
2.可以在下節中的jQuery選擇器實驗室測試各種選擇器
1. 基礎選擇器Basics
名稱
說明
舉例
#id
根據元素Id選擇
$(“divId”) 選擇ID為divId的元素
element
根據元素的名稱選擇,
$(“a”) 選擇所有元素
.class
$(“a”) 選擇所有元素.class根據元素的css類別選擇$(“.bgRed”) 選擇所用CSS類為bgRed的元素*選擇所有元素
$(“*”)選擇頁上所有元素
sel
ancestor descendant
使用」form input」的形式中的所有祖先類型. from, descendant(子孫)為input.
$(“.bgRed div”) 選擇CSS類別為bgRed的元素中的所有
parent > child
選擇parent 的直接子child. child必須包含在parent中且父類別是parent元素.
$(“.myList>li”) 選擇CSS類別為myList元素中的直接子節點
prev + next
prev和next是兩個同等級的元素. 選取在prev元素後面的next元素.
$(“#hibiscus+img”)選在id為hibiscus元素後面的img對象.
註:siblings 是過濾器
$(“#someDiv~[title]”)選擇id為someDiv的物件後面所有帶有title屬性的元素
3. 基本過濾器Basic Filters
名稱
說明
舉例
:first
匹配找到的第一個元素
查找表格的第一行:$(“tr:first”
:last
找出表格的最後一行:$(“tr:last”)
:not(selector)
去除所有與給定選擇器匹配的元素
查找所有未選中的input 元素: $(“input:not( :checked)”)
:even
匹配所有索引值為偶數的元素,從0 開始計數
查找表格的1、3、5…行:$(“tr:even”)
:odd
符合所有索引值為奇數的元素,從0 開始計數
查找表格的2、4、6行:$(“tr:odd”)
:eq(index)
註:index從0 開始計數
查找第二行:$(“tr:eq(1)”)
:gt(index)
注:index從0 開始計數
查找第二第三行,即索引值是1和2,也就是比0 大:$(“tr:gt(0)”)
:lt(index)
註:index 從0 開始計數
查找第一第二行,即索引值是0和1,也就是比2小:$(“tr:lt(2)”)
:header
選擇所有h1,h2,h3一類的header標籤.
給頁面內所有標題加上背景色: $(“:header”).css(“background”, “#EEE”);
: animated
符合所有正在執行動畫效果的元素
只有對不在執行動畫效果的元素執行一個動畫特效: $(“#run”).click(function(){
});
4. 內容過濾器Content Filters
🎜名稱🎜說明
舉例
:contains(text)
匹配包含給定文本的元素
查找所有包含「John」的div 元素:$(“div:contains('John')”)
:empty
匹配所有不包含子元素或文字的空元素
查找所有不包含子元素或文字的空元素:$(“td:empty”)
:has(selector)
匹配含有選擇器所匹配的元素的元素
為所有包含p 元素的div 元素添加一個text 類別: $(“div:has(p)”).addClass(“test”);
:parent
匹配含有子元素或文本的元素
查找所有含有子元素或文字的td 元素:$(“td:parent”)
5.可見性過濾器Visibility Filters
名稱
說明
舉例
名稱
的不可見元素
注:在1.3.2版本中, hidden匹配自身或父類在文檔中不佔用空間的元素.如果使用CSS visibility屬性讓其不顯示但是佔位,則不輸入hidden.
尋找所有不可見的tr 元素:$(“tr:hidden”)
:visible
匹配所有的可見元素
查找所有可見的tr 元素:$(“tr:visible”)
6.屬性過濾器Attribute Filters
名稱
說明
舉例
[attribute]
匹配包含給定屬性的元素
? attribute=value]
$(“input[name='newsletter']”).attr(“checked” , true);
[attribute!=value]
$(“input[name!=' newsletter']”).attr(“checked”, true);
[attribute^=value]
$(“input[name$= 'letter']”)
[attribute*=value]
$(“input[name* ='man']”)
[attributeFilter1][attributeFilter2][attributeFilterN]
$(“input[id][name$='man']”)
7.子元素過濾器Child Filters
nth-child(even)
:nth-child(odd):nth-child(3n)
:nth-child(2)
:nth-child(3n+1)
:nth-child(2)
:nth-child(3n+1)
:nth-child(2)
:nth-child(3n+1)
:nth-child(3n+1)
:nth-child( child(3n+2)
在每個ul 尋找第2 個li:
$(“ul li:nth-child(2)”):first-child匹配第一個子元素
' :first' 只匹配一個元素,而此選擇符將為每個父元素匹配一個子元素
在每個ul 中查找第一個li:
$(“ul li:first-child”): last-child匹配最後一個子元素
':last'只匹配一個元素, 而此選擇符將為每個父元素匹配一個子元素
在每個ul 中查找最後一個li:
$( 「ul li:last-child」):only-child如果某個元素是父元素中唯一的子元素,那將會被匹配
如果父元素中含有其他元素,那將不會被匹配。
在ul 中尋找是唯一子元素的li:
$(“ul li:only-child”)
8. 表單選擇器Forms
名稱說明解釋所有符合, textarea, select 和button 元素
查找所有的input元素:
$(“:input”)
:text
匹配所有的文字方塊
查找所有文字方塊:
符合所有的文字方塊
查找所有文字方塊:
:password
匹配所有密碼框
$(“:password”)
:radio
匹配所有單選按鈕
複選框查找所有複選框:$(“:checkbox”)
:submit
$(“:submit”)
匹配所有圖像域
$(“:image”)
:reset
匹配所有重置按鈕
$(“:reset”)
查找所有重置按鈕:
$(“:reset”)
:button
$(“:button”)
$(“:3”)
$(“input:able)
匹配所有不可用元素
查找所有不可用的input元素:
$(“input:disabled”)
:checked
匹配所有選中的被選中元素(複選框、單選框等,不包括select中的option)
尋找所有選取的複選框元素:
$(“input:checked”)
:selected
符合所有選取的option元素
找出所有選取的選項元素:
符合所有選取的option元素
查找所有選取的選項元素:
select option:selected”)