使用jquery数据表保留滚动位置

时间:2014-04-17 18:23:09

标签: javascript jquery jquery-datatables scrolltop

我正在使用带有FixedColumn扩展名的DataTables插件。我一直试图在保留表的滚动位置的同时重新加载数据(来自Ajax源)。如果我在桌子的上半部分,它可以工作,但是在某个点之后它会跳回到刚过了一半的滚动。

我采用的一种方法是使用JQuery Deferred模式,如下所示:

function redrawTableInPlace() {
    var docTable = $('#documentsList').dataTable();
    var scrollPos=$(".dataTables_scrollBody").scrollTop();  
    console.log("Current scroll position: " + scrollPos);
    console.log("About to redraw");

    $.when(docTable.fnStandingRedraw()).then($(".dataTables_scrollBody").scrollTop(scrollPos));
}

这似乎没有任何效果,好像当时的结构甚至不存在。

我尝试修改DataTables以接受draw函数的回调,但回调不会被调用。我让它工作的唯一方法是在div上手动设置scrollTop,其setTimeout延迟足以使表绘制完成,这当然是不可取的。该代码如下所示:

function redrawTableInPlace() {
    var docTable = $('#documentsList').dataTable();
    var scrollPos=$(".dataTables_scrollBody").scrollTop();  
    console.log("Current scroll position: " + scrollPos);
    console.log("About to redraw");
    docTable.fnStandingRedraw();

    setTimeout(function() {
        $(".dataTables_scrollBody").scrollTop(scrollPos);
        console.log("Set scroll to: " + $(".dataTables_scrollBody").scrollTop());
    }, 40000);

}

我在网上发现的每一条建议都失败了,这让我觉得它与某些我们正在使用的特定DataTables插件/功能有关。有什么想法吗?

0 个答案:

没有答案