jQuery.find()忽略根节点

mor*_*des 11 jquery jquery-selectors

我的jQuery对象如下所示:

var myJq = jQuery("<div class='a'></div><div class='b'></div>")
Run Code Online (Sandbox Code Playgroud)

myJq.find(".a")返回一个空的jQuery对象,显然是因为find()只搜索jQuery对象中包含的节点的节点,而不是节点本身.

如何myJq使用选择器抓住其中一个div ?

use*_*716 18

你需要.filter()改用.

这将过滤jQuery对象顶层的项目.

myJq.filter(".a")
Run Code Online (Sandbox Code Playgroud)


Dan*_*uri 8

这是一个.find2(),它可以找到根元素和子元素:

$.fn.find2 = function(selector) {
  return this.filter(selector).add(this.find(selector));
};
Run Code Online (Sandbox Code Playgroud)

有了这个,你可以这样做:

var html = '<div class="one"><div class="one"></div></div>';
var el = html.find2(".one"); // will match both divs
Run Code Online (Sandbox Code Playgroud)

这里有更多关于它的信息:http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/