微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 为什么以下jQuery选择器不返回这两个元素?

我遇到的情况是我从一个html字符串创建一个jQuery对象,需要用特定的类选择其中的所有元素.

我发现奇怪的是它返回一个或另一个,这取决于我使用的选择机制类型.此处显示一个测试用例:

var tmpl = '<ul><li class="foo">TEST</li></ul><div class="foo">BAR</div>';

console.log( $('.foo',tmpl) ); //[<li class="foo">TEST</li>]
console.log( $(tmpl).find('.foo') ); //[<li class="foo">TEST</li>]
console.log( $(tmpl).filter('.foo') ); //[<div class="foo">BAR</div>]

http://jsfiddle.net/Rfq9F/

在此示例中,ul中的li元素和非后代div都具有类“foo”.在示例中,我使用.foo选择器并将上下文设置为模板字符串.其次,我在字符串上使用.find().最后,我在字符串上使用.filter().

有人可以解释选择器机制为何如此行事,以及如何实现我在开始时提到的目标?

解决方法

这是因为它不是单个根节点,而是两个(ul和div).

将所有内容包装在< div>中它会起作用:

http://jsfiddle.net/Rfq9F/3/

原文地址:https://www.jb51.cc/jquery/150736.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐