jQuery 如何处理评论元素?
Posted
技术标签:
【中文标题】jQuery 如何处理评论元素?【英文标题】:How does jQuery treat comment elements? 【发布时间】:2012-01-03 23:18:15 【问题描述】:我一直以为jQuery只对DOM元素进行操作,也就是那些有nodeType == 1
的节点。
但我很震惊,在创建 html $("<p> </p><!-- comment -->")
时会导致:
[p, Comment data=" comment ", length=21, nodeName="#comment", more...]
(萤火虫格式)
我通过 AJAX 接受了一些 HTML,并以这种方式创建了一个 DOM 注释,并将某处传递给仅适用于元素的函数:defaultView.getComputedStyle( elem, null )
有什么干净的方法可以解决吗?
【问题讨论】:
【参考方案1】:我一直认为 jQuery 只对 DOM 元素进行操作
它的选择器只有 select DOM 元素。在您的情况下,您正在从您提供的 HTML 字符串创建节点。因此 jQuery 会解析字符串并返回您所要求的节点。
要清理它,请发送.filter()
。
var els = $("<p> </p><!-- comment -->").filter(function()
return this.nodeType === 1;
);
【讨论】:
接受解释。 @tillda:仅供参考,使用直接this.nodeType === 1
测试也比运行"*"
选择器更快,尽管使用较小的集合,它不会产生明显的差异。 【参考方案2】:
嗯,一个有趣的问题。经过一番摆弄,我发现您可以使用 .filter
和 universal selector (*
) 删除它们。
var a = $("<p></p><!-- comment -->");
console.log(a);
console.log(a.filter("*"));
【讨论】:
以上是关于jQuery 如何处理评论元素?的主要内容,如果未能解决你的问题,请参考以下文章