Javascript 使用jquery数据表保留滚动位置
我正在使用DataTables插件和FixedColumn扩展。我一直试图在保留表的滚动位置的同时重新加载数据(从Ajax源代码)。如果我在表格的上半部分,它会工作,但在某个点下,它会跳回到刚刚滚动了一半的位置 我采用的一种方法是使用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
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插件/功能有关。有什么想法吗