1

我发现自己的情况是,我得到了一个 NodeList,我试图将其放入 jQuery 对象中进行操作。问题是数组还包括文本节点、注释节点等,当你说$(nodeList).

我使用下划线创建了一个快速clean函数,它去除了 DOM 元素并将它们作为数组返回:

_.mixin({
    clean: function(nodeList) {
        return _(nodeList).filter(function(node) {
            return node.nodeType == 1;
        });
    }
});

$(_(nodeList).clean())给了我一个可用的 jQuery 对象。

有没有更好的方法来解决这个问题?

谢谢。

4

2 回答 2

0

我真的不确定你在问什么问题,但这是一个有效的 jQuery 实现,它从 jQuery 对象中过滤掉非元素:

jQuery.fn.clean = function() {
    return this.filter(function() {
        return(this.nodeType == 1);
    });
}

var nodes = document.getElementById("container").childNodes;
var $elements = jQuery(nodes).clean();

而且,一个工作演示:http: //jsfiddle.net/jfriend00/RV6H7/

jQuery 有一个执行此类操作的内部函数,但我不知道有任何内置的公共方法可以执行此操作。

于 2012-08-06T05:58:10.570 回答
0

简单地说:jQuery( nodelist ).filter( '*' )

这将过滤掉除元素节点之外的所有内容,只使用 vanilla jQuery。

于 2015-07-13T10:37:30.327 回答