查找函數(shù)的作用是從集合內(nèi)再次查找匹配的元素,查找函數(shù)和過濾函數(shù)有時候是可以替換的。
查找函數(shù)列表:
名稱
|
說明
|
舉例
|
add(expr)
|
expr
可以是選擇器表達式、
DOM
對象、
jQuery
對象、集合或者
HTML
字符串。如果是
HTML
字符串則會動態(tài)創(chuàng)建對象并添加到
jQuery
對象集合中
|
$(“p”).add(“<span>Again</span>”)
動態(tài)的生成一個元素,并添加到匹配的元素中。
|
children([expr])
|
取得
jQuery
對象集合中所有匹配滿足表達式的
直接子元素
。省略
expr
參數(shù)表示選擇所有直接子元素。注意:
parents()
將查找所有祖輩元素,而
chlidren()
只考慮子元素而不考慮所有后代元素
|
$(“div”).children()
查找
div
中的每個直接子元素
|
closest([expr])
|
jQuery1.3
新增。從元素本身開始,逐級向上級元素匹配,并返回最先匹配的元素。
closest
會首先檢查當前元素是否匹配,如果匹配則直接返回元素本身。如果不匹配則向上查找父元素,一層一層往上,知道找到匹配選擇器的元素。如果什么都沒找到則返回一個空的
jQuery
對象。
closest
對于處理事件委派非常有用。
|
$(documnet).bind(“click”,function(e){
$(e.target).closest(“l(fā)i”).toggleClass(“hilight”)
});
為事件源最近的父類
li
對象更換樣式
|
contents()
|
查找匹配元素內(nèi)部所有的子結(jié)點(
包括文本結(jié)點
)。如果元素是一個
iframe
,則查找文檔內(nèi)容
|
$(“p”).contents().not(“[nodeType=1]”).wrap(“<br>/”);
查找所有文本結(jié)點并加粗。
|
find(expr)
|
搜索所有與指定表達式匹配的元素。這個函數(shù)是找出正在處理元素的后代元素的好方法。所有搜索都依靠
jQuery
表達式來完成。這個表達式可以使用
CSS1-3
的選擇器語法來寫
|
從所有的段落開始,進一步搜索下面的
span
元素。
與
$(“p span”)
相同:
$(“p”).find(“span”)
|
next([expr])
|
取得一個包含匹配的元素集合中每一個元素緊鄰的后面同輩元素的元素集合。這個函數(shù)只返回后面那個緊鄰的同輩元素,而不是后面所有的同輩元素
(nextAll)
。可以用一個可選的表達式進行篩選
|
找到每個段落后面緊鄰的同輩元素:
$(“p”).next()
|
offsetParent
|
返回第一個有定位的父類比如
(relative
或
absolute)
|
|
parent([expr])
|
取得一個包含著所有匹配元素的唯一父元素的元素集合。
可以使用篩選的表達式來篩選
|
查找每個段落的父元素
$(“p”).parent()
|
parents([expr])
|
取得一個包含著所有匹配元素的祖先元素的元素集合(不包含根元素)。可以通過一個可選的表達式進行篩選
|
找到每個
span
元素的所有祖先元素
$(“span”).parents()
|
prev([expr])
|
取得一個包含匹配的元素集合中每個元素緊鄰的前一個同輩元素的元素集合
可以用一個可選的表達式進行篩選。只有緊鄰的同輩元素會被匹配到,而不是前面所有的同輩元素
|
找到每個段落緊鄰的前一個同輩元素
$(“p”).prev()
|
prevAll([expr])
|
查找當前元素之前所有的同輩元素,可以用表達式過濾
|
給最后一個之前的所有的
div
加上一個類:
$(“div”).prevAll().addClass(“before”);
|
siblings([expr])
|
取得一個包含匹配的元素集合中每一個元素的所有唯一同輩元素的元素集合。可以用可選的表達式進行篩選。
|
找到每個
div
的所有同輩元素
$(“div”).siblings()
|
?
這張表看起來很煩,心里都很煩,find會常用吧。其他也不知道是不是能用上。不過既然有總是好的,也是有需要人家才開發(fā)的。希望以后深入使用可以體會到好處。
?
使用Traversing分類中的過濾和查找,會改變jQuery對象集合。串聯(lián)函數(shù)的作用就是找回或合并這些變更。
串聯(lián)函數(shù)的清單:
名稱
|
說明
|
舉例
|
andSelf()
|
將先前所選的元素加入到當前元素中。對于篩選或查找后的元素,要加入先前所選元素將會很有用
|
選取所有
div
及內(nèi)部的
p
,并加上
border
類
$(“div”).find(“p”).andSelf().addClass(“border”);
|
end()
|
回到最近的一個“破壞性”操作之前,即將匹配的元素列表變?yōu)榍耙淮蔚臓顟B(tài)。
如果之前沒有破壞性操作,則返回一個空集。所謂的“破壞性”就是指任何改變所匹配的
jQuery
元素的操作。這包括在
Traversing
中返回任何一個
jQuery
對象的函數(shù)
-add,andSelf,
children,filter,find,map,next,nextAll,not,,
parent,parents,prev,prevAll,siblings,slice
再加上
Manipulation
中的
clone,appendTo,prependTo,insertBefore,
insertAfter,replaceAll
|
選取所有的
p
元素,查找并選取
span
子元素,然后再反過來選取
p
元素:
$(“p”).find(“span”).end();
|
?
andSelf()函數(shù)是不能同時使用兩次的,第二次調(diào)用是沒有效果的。
end()函數(shù)是可以多次調(diào)用的。
end()函數(shù)可以恢復(fù)一次破壞性操作。提供end()函數(shù)主要是為了能夠在jQuery鏈式操作上執(zhí)行更多的操作。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
