1

在浏览器的 JavaScript 控制台中试试这个:

$('<p><span id="wow">FooBar</span></p>').filter('#wow')

我得到的是[]。这是为什么?难道不应该过滤掉id不是“哇”的跨度吗?

4

4 回答 4

2

jQuery 对象中只有一个元素,它是p. span刚好是个孩子。然后, p 与您的查询不匹配,过滤器返回一个空数组。您可能想使用查找:

$('<p><span id="wow">FooBar</span></p>').find('#wow')
于 2013-07-01T04:36:15.457 回答
2

.filter()过滤匹配元素的集合。您的元素集中唯一的元素是<p>标签,它与您的选择器不匹配。

您想.find()改用:

> $('<p><span id="wow">FooBar</span></p>').find('#wow')
[<span id=​"wow">​FooBar​&lt;/span>​]
于 2013-07-01T04:40:39.783 回答
1

过滤器将为您提供符合条件的项目。我认为您的意思是使用“不”。

于 2013-07-01T04:36:56.253 回答
0

查看文档中选择器的语法,结果也可能是零集合,具体取决于是否找到元素:

使用 id 选择器作为参数调用 jQuery()(或 $())将返回一个 jQuery 对象,其中包含零个或一个 DOM 元素的集合。

于 2013-07-01T04:41:11.640 回答