当从底部点击页面时,jquery数据表滚动到顶部

use*_*939 6 datatables

我正在使用具有底部分页的jQuery数据表.从底部单击页面时,我希望它将其滚动到顶部,这样用户就不必为较长的页面手动执行此操作.我尝试使用dataTables_scrollBody,但它无法正常工作

这是我的代码:

oTable = $('#tTable').dataTable({
    "fnDrawCallback": function(o) {
        $('dataTables_scrollBody').scrollTop(0);
     }
});
Run Code Online (Sandbox Code Playgroud)

只有当您单击第一个/最后一个(我认为是默认行为)时,页面才会滚动到顶部,但不会在每个页面单击时滚动到顶部.

dav*_*rad 20

更新.最初的答案是针对1.9.x. 在dataTables 1.10.x中,它更容易:

table.on('page.dt', function() {
  $('html, body').animate({
    scrollTop: $(".dataTables_wrapper").offset().top
  }, 'slow');
});
Run Code Online (Sandbox Code Playgroud)

演示 - > http://jsfiddle.net/wq853akd/

此外,如果您正在使用数据表的引导版本,您可能会注意到在使用此修复程序时,页面实际上在向上滚动到顶部后向下滚动.这是因为它根据此datatables.net线程专注于单击的按钮.你可以通过简单地关注动画调用后的表头来解决这个问题,如下所示:

table.on('page.dt', function() {
  $('html, body').animate({
    scrollTop: $(".dataTables_wrapper").offset().top
  }, 'slow');

  $('thead tr th:first-child').focus().blur();
});
Run Code Online (Sandbox Code Playgroud)

[ 原始答案 ]您应该定位.dataTables_wrapper并附加事件.paginate_button.这里有一个漂亮的小动画:

function paginateScroll() {
    $('html, body').animate({
       scrollTop: $(".dataTables_wrapper").offset().top
    }, 100);
    console.log('pagination button clicked'); //remove after test
    $(".paginate_button").unbind('click', paginateScroll);
    $(".paginate_button").bind('click', paginateScroll);
}
paginateScroll();
Run Code Online (Sandbox Code Playgroud)

看小提琴 - > http://jsfiddle.net/EjbEJ/

  • 考虑`$(".paginate_button:not(.disabled)")`以避免在单击禁用的next/prev按钮时滚动. (3认同)
  • 谢谢!很好的答案.但是,这会滚动到表格的顶部,如果你想滚动到页面的顶部(在我的情况下,粘性标题覆盖了表格的一部分)使用`$("html,body").animate({ scrollTop:0},"慢");` (2认同)
  • 我使用了上面的代码。当我单击分页按钮时,滚动到顶部,但在加载数据后,回到页面底部。为什么? (2认同)

Fin*_*inn 8

由于Datatables 1.10有这个页面事件 https://datatables.net/reference/event/page

所以可以使用

$('#example_table').on( 'page.dt', function () {
    $('html, body').animate({
        scrollTop: 0
    }, 300);
} );
Run Code Online (Sandbox Code Playgroud)

演示:https://jsfiddle.net/mcyhqrdx/

  • 你的回答是最好的。 (2认同)