我一直认为jQuery只对DOM元素运行,即那些nodeType == 1的节点.
但是我很震惊,在创建HTML $(“< p>< / p><! - comment - >”)时会导致:
[p,评论{data =“comment”,长度= 21,nodeName =“#comment”,更多…}](Firebug格式)
我通过AJAX接受了一些HTML,并且以这种方式创建了DOM Comment并将其传递给仅适用于元素的函数:defaultView.getComputedStyle(elem,null)
这有什么干净的方法吗?
解决方法
I always thought that jQuery operates only on DOM elements
它的选择器只选择DOM元素.在您的情况下,您将从您提供的HTML字符串创建节点.所以jQuery解析字符串并返回你要求的节点.
要清理它,请执行.filter().
var els = $("<p> </p><!-- comment -->").filter(function() { return this.nodeType === 1; });