【发布时间】:2012-08-20 03:44:42
【问题描述】:
对于这个问题,假设我们需要 append() 1000 个对象到 body 元素。
你可以这样做:
for(x = 0; x < 1000; x++) {
var element = $('<div>'+x+'</div>');
$('body').append(element);
}
这可行,但对我来说似乎效率低下,因为 AFAIK 这将导致 1000 次文档重排。更好的解决方案是:
var elements = [];
for(x = 0; x < 1000; x++) {
var element = $('<div>'+x+'</div>');
elements.push(element);
}
$('body').append(elements);
然而,这不是一个理想的世界,这会引发错误Could not convert JavaScript argument arg 0 [nsIDOMDocumentFragment.appendChild]。我了解append() 无法处理数组。
我将如何使用jQuery(我知道DocumentFragment 节点,但假设我需要在元素上使用其他jQuery 函数,例如.css())一次向DOM 添加一堆对象以改进性能?
【问题讨论】:
-
append()不接受字符串数组。 -
@GeorgeReith 您批准的答案比您的第一种方法还要慢。看看这个jsfiddle中的控制台日志jsfiddle.net/du2TN/2
-
@davids 很有趣,虽然我的原始代码似乎在 jQuery 1.8 中工作并且是 jQuery 方法中最快的。 (更新了你的 JSfiddle)
-
很高兴知道 :) 无论如何,@jAndi 和 jackwander 的解决方案要快得多。但如果你更喜欢使用 jQuery,随便你吧:)
-
@davids 我需要使用 jQuery,因为它们必须是 jQuery 对象,这样我才能在其中使用其他 jQuery 函数。
标签: javascript jquery arrays performance append