我一直认为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 )
这有什么干净的方法吗?
答案 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;
});