Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery数据表保留滚动位置_Javascript_Jquery_Jquery Datatables_Scrolltop - Fatal编程技术网

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

Javascript 使用jquery数据表保留滚动位置,javascript,jquery,jquery-datatables,scrolltop,Javascript,Jquery,Jquery Datatables,Scrolltop,我正在使用DataTables插件和FixedColumn扩展。我一直试图在保留表的滚动位置的同时重新加载数据(从Ajax源代码)。如果我在表格的上半部分,它会工作,但在某个点下,它会跳回到刚刚滚动了一半的位置 我采用的一种方法是使用JQuery延迟模式,如下所示: function redrawTableInPlace() { var docTable = $('#documentsList').dataTable(); var scrollPos=$(".dataTables

我正在使用DataTables插件和FixedColumn扩展。我一直试图在保留表的滚动位置的同时重新加载数据(从Ajax源代码)。如果我在表格的上半部分,它会工作,但在某个点下,它会跳回到刚刚滚动了一半的位置

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

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插件/功能有关。有什么想法吗