til*_*lda 8 html jquery 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 )
这有什么干净的方法吗?
嗯,一个有趣的问题.摆弄了一会儿后,我发现,你可以使用删除它们.filter与通用选择(*).
var a = $("<p></p><!-- comment -->");
console.log(a);
console.log(a.filter("*"));
Run Code Online (Sandbox Code Playgroud)
我一直认为jQuery只能在DOM元素上运行
它的选择器只选择 DOM元素.在您的情况下,您将从您提供的HTML字符串创建节点.所以jQuery解析字符串并返回你要求的节点.
要清理它,做一个.filter().
var els = $("<p> </p><!-- comment -->").filter(function() {
return this.nodeType === 1;
});
Run Code Online (Sandbox Code Playgroud)