jQuery find似乎不起作用

时间:2010-08-16 15:04:51

标签: jquery find

我有一个存储在“selectedContents”中的DocumentFragment,我试图在jQuery的帮助下找到它中的“span”元素。它有两个子节点,第一个是文本节点,第二个是跨度。

当我尝试$(selectedContents.childNodes).find('span')时,它会返回一个空集!

然而,当我打印"$(selectedContents.childNodes)[1].localName"时,它说“span”!

我的发现有什么不对吗?请帮忙。

感谢
SRIKANTH

5 个答案:

答案 0 :(得分:10)

由于您传递了一系列元素,因此您需要使用.filter()来过滤该集合中的<span>

$(selectedContents.childNodes).filter('span');

.find()方法用于搜索后代


编辑:请注意,将childNodes传递给jQuery对象的方法是正确的。您无法按照某些建议传递documentFragment

以下是一个示例: http://jsfiddle.net/P8nur/

答案 1 :(得分:2)

使用$(selectedContents.childNodes),您已经选择了selectedContents中的所有元素。所以做一个find会在该选择器的第一个元素上执行该方法。

试试这个:

$(selectedContents).find('span')

答案 2 :(得分:0)

尝试

$(selectedContents).find('span');

答案 3 :(得分:0)

这里的事情是$(selectedContents)返回一个jQuery神奇的东西,而$(selectedContents.childNodes)返回一个丑陋的数组。因此,您的数组没有find()函数。

使用$(selectedContents).find('span')$(selectedContents.childNodes).filter('span'),正如@justkt和@patrick dw所说。

答案 4 :(得分:0)

我尝试了$(selectedContents).find('span'),但结果是空集!和filter一样,这也导致空集!

然而$(selectedContents).children('span')产生了我想要的东西!

就像patrick_dw所说,可能jQuery在DocumentFragment中没有按预期工作!

谢谢大家,感谢您的帮助。