jQuery如何处理注释元素?

时间:2011-11-22 15:12:23

标签: jquery html parsing comments innerhtml

我一直认为jQuery只对DOM 元素进行操作,即具有nodeType == 1的节点。

但是我感到震惊的是,在创建HTML $("<p> </p><!-- comment -->")时会产生:

[p, Comment { data=" comment ", length=21, nodeName="#comment", more...}](Firebug格式化)

我通过AJAX接受了一些HTML,并且以这种方式创建了DOM Comment并将其传递给仅适用于元素的函数:defaultView.getComputedStyle( elem, null )

这有什么干净的方法吗?

2 个答案:

答案 0 :(得分:5)

嗯,这是一个有趣的问题。在摆弄一点之后,我发现您可以使用.filter universal selector *将{{3}}删除。

var a = $("<p></p><!-- comment -->");
console.log(a);
console.log(a.filter("*"));

答案 1 :(得分:5)

  

我一直认为jQuery只对DOM元素进行操作

其选择器仅选择 DOM元素。在您的情况下,您将从您提供的HTML字符串创建节点。所以jQuery解析字符串并返回你要求的节点。

要清除它,请执行.filter()

var els = $("<p> </p><!-- comment -->").filter(function() { 
                                                  return this.nodeType === 1; 
                                               });