【发布时间】:2017-02-12 17:42:54
【问题描述】:
采取以下两种方式使用jQuery从DOM中移除元素数组:
var collection = [...]; // An array of jQuery DOM objects
// Using jQuery iteration
$(collection).each(function(index, element) { element.remove(); });
// Or as pointed out by Barmar
$(collection).remove();
// Using native iteration
collection.forEach(function(element) { element.remove(); });
在操作上有什么真正的区别吗?我希望,除非浏览器解释器/编译器足够聪明,否则前一种方法会有额外的不必要的开销,尽管如果数组很小,可能会很小。
【问题讨论】:
-
你的第二个是有偏见的,因为它仍然使用 jQuery。
collection.forEach(function(element) {element.parentNode.removeChild(element);})是一个更公平的比较。 -
不,
$(selector).each()以元素为参数调用函数,而不是 jQuery 对象。 -
收藏从何而来?通常使用 jQuery,您不需要创建自己的元素数组,因为 jQuery 对象会为您完成这项工作
-
要遍历数组,而不是 jQuery 对象中的元素,请使用
$.each(array, function...),而不是$(array).each(function...) -
@charlietfl 例如,我将元素附加到 DOM 并希望将它们在附加时推送到数组中,以便更快地访问,而不是再次扫描 DOM。
标签: javascript jquery dom