我的jQuery对象如下所示:
var myJq = jQuery("<div class='a'></div><div class='b'></div>")
myJq.find(".a")
返回一个空的jQuery对象,显然是因为find()
只搜索jQuery对象中包含的节点的 children ,而不是节点本身。
如何使用选择器抓取myJq
中的一个div?
答案 0 :(得分:18)
答案 1 :(得分:8)
这是一个 .find2(),它会找到根元素和子元素:
$.fn.find2 = function(selector) {
return this.filter(selector).add(this.find(selector));
};
有了这个,你可以这样做:
var html = '<div class="one"><div class="one"></div></div>';
var el = html.find2(".one"); // will match both divs
以下是有关它的更多信息:http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/
答案 2 :(得分:1)
您可以使用.filter()
var div = myJq.filter('.a');
或(更好,更快)使用.first()
var div = myJq.first('.a');
<强>基准强>
var myJq = jQuery("<div class='a'></div><div class='b'></div>")
var loop = 20000;
console.time('filter');
while(loop--){
var blah = myJq.filter(".a");
}
console.timeEnd('filter');
loop = 20000;
console.time('first');
while(loop--){
var blah = myJq.first(".a");
}
console.timeEnd('first');
.first()
对我来说快了大约8倍。