我发现自己处于一种情况,我得到了一个NodeList,我试图将其放入一个jQuery对象中进行操作。问题是数组还包括文本节点,注释节点等,当你只说$(nodeList)
时,似乎会混淆jQuery。
我使用下划线来制作一个快速clean
函数,它可以去除DOM元素并将它们作为数组返回:
_.mixin({
clean: function(nodeList) {
return _(nodeList).filter(function(node) {
return node.nodeType == 1;
});
}
});
使用此$(_(nodeList).clean())
为我提供了一个可用的jQuery对象。
还有更好的方法吗?
感谢。
答案 0 :(得分: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有一个执行此类操作的内部函数,但我不知道有任何内置的公共方法。
答案 1 :(得分:0)
简单地说:jQuery( nodelist ).filter( '*' )
?
除了vanilla jQuery之外,这将除掉除了元素节点之外的所有内容。