我有一个存储在“selectedContents”中的DocumentFragment,我试图在jQuery的帮助下找到它中的“span”元素。它有两个子节点,第一个是文本节点,第二个是跨度。
当我尝试$(selectedContents.childNodes).find('span')
时,它会返回一个空集!
然而,当我打印"$(selectedContents.childNodes)[1].localName"
时,它说“span”!
我的发现有什么不对吗?请帮忙。
感谢
SRIKANTH
答案 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中没有按预期工作!
谢谢大家,感谢您的帮助。