2014-01-15 81 views
0

說我有這樣的HTML:鏈混亂

<div id="div_box"> 
    <ul> 
     <li class="li1"></li> 
     <li class="li2"></li> 
     <li class="li3"></li> 
    </ul> 
</div> 

我想刪除類 「LI1」。

我試圖與jQuery的:

$("#div_box").find(".li1").removeClass("li1"); 

它的工作原理,但我不明白的是,爲什麼它的工作原理。在鏈接中,該方法僅適用於給定的選擇器。但#div_box沒有名爲「li1」的類,所以這不應該起作用。

我誤解了鏈接是如何工作的?有人可以澄清爲什麼這個工程?

+0

您是否煩讀手冊? [_「'.find()'〜獲取當前匹配元素集中每個元素的後代,並通過選擇器,jQuery對象或元素進行過濾。」_](http://api.jquery.com/find /) – Sparky

+5

這個問題似乎是無關緊要的,因爲答案已經在手冊中明確說明,因此不太可能幫助其他人。 – Sparky

回答

0

.find()方法返回的是具有類li1中的#div_box所有後代......

不是所有的jQuery方法返回相同的對象集上有人呼籲......大多是tree traversal方法返回一組不同的對象

0

它在文檔中很好的解釋... http://api.jquery.com/find/

.find()方法允許我們通過 這些元素的後代在DOM樹搜索和 將構建一個新的jQuery對象匹配元素。

.find()方法的第一個簽名接受與我們可以傳遞給$()函數相同類型的選擇器 表達式。 元素將通過測試它們是否匹配此選擇器進行過濾。

與遍歷到的元素

不同於樹遍歷方法的其餘部分的關注,選擇器 表達需要在呼叫到.find()。如果我們需要檢索 所有的後代元素,我們可以通過通用選擇器 '*'來完成此操作。

0

鏈接將指向object這是evaluated最近,在你的情況下,最近評估了object是出落得的.find('.li1')。如果您想將#div_box添加到選擇器中,則必須在當前上下文中使用.addBack()