我遇到了一種情況,我從一個html字符串創建一個jQuery對象,並且需要使用特定的類來選擇其中的所有元素。爲什麼下面的jQuery選擇器不會返回這兩個元素?
我發現奇怪的是,它返回一個或另一個,這取決於我正在使用哪種類型的選擇機制。測試情況如下所示:
var tmpl = '<ul><li class="foo">TEST</li></ul><div class="foo">BAR</div>';
console.log($('.foo', tmpl)); //[<li class="foo">TEST</li>]
console.log($(tmpl).find('.foo')); //[<li class="foo">TEST</li>]
console.log($(tmpl).filter('.foo')); //[<div class="foo">BAR</div>]
在這個例子中,無論是在一個UL一個li元素和非子代DIV具有類「foo」的。在示例中,我使用.foo選擇器並將上下文設置爲模板字符串。其次,我在字符串上使用.find()。最後,我在字符串上使用.filter()。
有人可以解釋爲什麼選擇器機制的行爲,以及如何實現我在開始時提到的目標?
有道理。感謝你的回答。 – Geuis 2012-03-13 10:55:51