2012-07-20 41 views
-1

第一:jQuery的問題,我有問題要了解

.closest('.notice') 

這將需要.notice本身或者它會採取什麼最接近.notice了DOM樹?

.next('.notice') - 它會抓住dom樹下的什麼,對吧?

還有一句:

$('#celebTree ul').hide().before('<div class="bla"></div>').prev().addClass('handle closed') 

與.prev jQuery的應選擇 「喇嘛」 之前的元素,應用類。但它正在將該類應用於使用.before方法插入的元素。爲什麼它是這樣的?

回答

0

.closest('notice')是匹配最接近的父母或元素本身是否匹配:

<div class="notice"> //This will be selected with $("#target").closest(".notice") 
    <div id="target"></div> 
</div> 

<div class="notice"> 
    <div id="target" class="notice"></div> //This will be selected with $("#target").closest(".notice") 
</div> 

.next('notice')選擇下一個元素,如果它匹配的同胞:

<div id="target"></div> 
<div class="notice"></div> //This will be selected with $("#target").next(".notice") 

<div id="target"></div> //NOTHING will be selected with $("#target").next(".notice") 
<div></div> 

.before()不返回新jQuery對象,它返回之前插入內容的舊對象:

$('#celebTree ul').hide().before('<div class="bla"></div>') 
//Returns the '#celebTree ul'. NOT jQuery object wrapping '<div class="bla"></div>' 

由於您剛纔插入的元素和prev'#celebTree ul'這裏運行,prev將採取以前的元素兄弟,這是內容。

0
.closest('.notice') 

.closest()將遍歷DOM樹(向上)並返回所述選擇匹配的第一個祖先。

.next('.notice') 

.next()將返回緊隨其後的兄弟,如果選擇匹配。

$('#celebTree ul').hide().before('<div class="bla"></div>').prev().addClass('handle closed') 

這適用的類要插入,因爲.before()將返回相同的jQuery對象,它被稱爲上(插入的元素不會被添加到匹配的集合)的元素。由於匹配的元素現在已經插入,.prev()將返回新的元素。