appendTo()的性能问题是动态创建表

时间:2016-12-18 13:59:03

标签: javascript jquery

调试后我的表似乎加载缓慢(我以为它是我的服务器),我发现它实际上是前端javascript,而不是后端PHP。服务器在3-4ms内响应,而javascript处理时间最长为350ms。

在阅读this article之后,我找到了罪魁祸首:

文章摘录:

var arr = reallyLongArray;
$.each(arr, function(count, item) {
    var newTd = $('<td></td>').html(item).attr('name','pieTD');
    var newTr = $('<tr></tr>');
    newTr.append(newTd);
    $('table').append(newTr);
});

不同之处在于我使用的是appendTo()而不是append。这是因为我的行有动态jquery元素 - 点击处理程序,.data()等。

本文中的解决方案基本上是连接您的行,然后在最后运行一个 .append()而不是每行一个。

appendTo()是否有类似的解决方案?也许附加某种 ghost元素,然后在最后插入整个元素?这会提高性能吗?

1 个答案:

答案 0 :(得分:0)

  

也许附加某种鬼元素,然后在最后插入整个元素?

完全。您可以创建行并将其附加到已断开连接的tbody元素,然后将tbody元素附加到表中。这样就有单个实时DOM操作,而不是数百个。