我有以下代碼片段,它循環遍歷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