在jQuery中重建元素与质量显示/隐藏

时间:2013-03-20 20:10:31

标签: javascript jquery dom

我有一个分页的数据表,我想缓存客户端,我正在试图找出如何最有效地切换页面。

做得更好:

一个。通过对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的性能更差。

1 个答案:

答案 0 :(得分:0)

我会做两者的组合。

在加载时,您将显示第一页(参考存储在某处的完整列表)。

当请求第二页时,您将使用第二页数据填充它并隐藏第一页。

当第二页被请求时,它已经被填充,因此它将是一个隐藏/显示功能。

这最好由知道哪个页面是当前页面,可以有多少页面等的类来处理。然后当你可以进行一些智能内存管理时,你可以在那里清空一定数量的页面。当前页面。

但我建议使用现有解决方案

有许多客户端分页插件,特别是对于jQuery。

我会选择现有的解决方案,而不是试图在这里重新发明轮子。