我有以下代码片段,它循环遍历DOM对象数组,运行测试并向节点追加一些文本(如果返回true)。表现形式附加到现有DOM元素数组
$.each(selections, function (i, e) {
var test = some_test(e);
if(test) {
$(e).append('passed');
}
});
虽然此代码工作正常,在大集很明显是要执行很多附加到DOM。本文on reasons to use append correctly演示了如何追加到DOM是更高性能:
var arr = reallyLongArray;
var textToInsert = [];
var i = 0;
$.each(arr, function(count, item) {
textToInsert[i++] = '<tr><td name="pieTD">';
textToInsert[i++] = item;
textToInsert[i++] = '</td></tr>';
});
$('table').append(textToInsert.join(''));
我的问题是什么来修改一组现有的DOM元素,而无需调用每个元素.append
最高效的方法是什么?上面的例子演示了创建一个新元素。这是唯一的方法吗?
我不明白这个问题。 'append'添加一个新的元素。您不应该使用'append'来修改现有的元素 – jasonscript 2014-12-02 01:18:49
一般的做法是尽可能延缓对DOM的修改。 DOM的每个更改都会分别重新绘制。这适用于添加新元素并对现有元素进行更改 – jasonscript 2014-12-02 01:20:15
请注意,您阅读的文章已超过5年。浏览器引擎已经移动。 “更多”已成为“有时更多”。就你而言,你已经注意到,特定的“优化”甚至不适用。用你已有的东西去做,它最具可读性。 – Bergi 2014-12-02 01:34:42