我有一个分页的数据表,我想缓存客户端,我正在试图找出如何最有效地切换页面。
做得更好:
一个。通过对DOM的一个修改来重建和替换表
var pageLength = 50;
var cache; //array of some objects from database
function changePage(index) {
var $table = $("<table>");
$.each(cache, function (i, row) {
var $tr = $("<tr>");
if (i < index || i > index + pageLength) $tr.hide();
$tr.append($("<td>", { text: row.ID }));
$tr.append($("<td>", { text: row.Name }));
$table.append($tr);
});
$("#targetDiv").html($table);
}
或
B中。插入DOM后显示和隐藏行
function changePage(index) {
var $table = $("#targetDiv table");
$table.find("tr:visible").hide();
$table.find("tr").each(function (i, row) {
if (i > index && i < index + pageLength) $tr.show();
});
}
我写了一些与第一个相似的内容,然后在Chrome和IE8中运行它,发现IE非常慢,而Chrome没有问题。不幸的是,我们的标准仍然是IE7,所以我试图在可能的情况下优化IE7中的JS引擎比IE8的性能更差。
答案 0 :(得分:0)
我会做两者的组合。
在加载时,您将显示第一页(参考存储在某处的完整列表)。
当请求第二页时,您将使用第二页数据填充它并隐藏第一页。
当第二页被请求时,它已经被填充,因此它将是一个隐藏/显示功能。
这最好由知道哪个页面是当前页面,可以有多少页面等的类来处理。然后当你可以进行一些智能内存管理时,你可以在那里清空一定数量的页面。当前页面。
但我建议使用现有解决方案
有许多客户端分页插件,特别是对于jQuery。
我会选择现有的解决方案,而不是试图在这里重新发明轮子。