调试后我的表似乎加载缓慢(我以为它是我的服务器),我发现它实际上是前端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元素,然后在最后插入整个元素?这会提高性能吗?
答案 0 :(得分:0)
也许附加某种鬼元素,然后在最后插入整个元素?
完全。您可以创建行并将其附加到已断开连接的tbody
元素,然后将tbody
元素附加到表中。这样就有单个实时DOM操作,而不是数百个。