数据表在页面更改时滚动顶部
Datatables scroll top on page change
>我有一个问题。我想在使用数据表时滚动页面更改的表格顶部。
我添加了以下代码
$('#tableId').on( 'page.dt', function () {
$('html, body').animate({
scrollTop: 0
}, 200);
});
(目前它滚动到页面顶部)但它并不完全有效。
当我单击其他页面时,页面会滚动到顶部,但是在加载数据后,它会再次向下滚动。我不知道发生了什么(我不是 JavaScript 大师),但似乎 Datatables 在加载数据后运行额外的操作,再次滚动到底部。有没有办法防止数据表(可能)在加载数据后向下滚动?
我可以使用draw.dt
而不是page.dt
,它可以正常工作,但它会引起其他副作用。如果表格放置在页面上的某个位置,则在加载数据后,它将被滚动到页面顶部(或表格顶部),我只想在更改页面后运行它。
我想
通了,但花了我很多时间。问题是当我使用引导版本时:
<script type="text/javascript" src="https://cdn.datatables.net/t/bs/jq-2.2.0,dt-1.10.11/datatables.min.js"></script
当我把它改成:
<script src="http://code.jquery.com/jquery-2.2.1.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/t/dt/dt-1.10.11/datatables.min.js"></script>
它工作正常。
所以最后我注意到我可以这样包含它(数据表和引导插件在单独的文件中):
<script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.11/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/1.10.11/js/dataTables.bootstrap.min.js"></script>
问题出在最后一个文件中(此处未缩小版本 - https://cdn.datatables.net/1.10.11/js/dataTables.bootstrap.js)。在此文件中有一行:
$(host).find( '[data-dt-idx='+activeEl+']' ).focus();
这一行导致当我在加载数据后单击按钮更改页面时,焦点再次移动到页面底部。当我在本地使用此文件并注释此行时,现在当我使用:
$('#tableId').on( 'page.dt', function () {
$('html, body').animate({
scrollTop: 0
}, 200);
});
我被移动到页面顶部,当我使用时;
$('#tableId').on( 'page.dt', function () {
$('html, body').animate({
scrollTop: $('#tableId').offset().top
}, 200);
});
我被移到了桌子的顶部。
这在全球范围内运行良好,无需编写代码来定位站点/应用程序上的每个表。
// Scroll back to top of datatable when its pagination button is clicked to load/display next page
$('.dataTables_wrapper').click(function(event) {
var clickedElem = event.target;
if ($(clickedElem).hasClass("paginate_button") || $(clickedElem).parents('.dataTables_paginate').length) {
/* Not when the button is diabled */
if (!$(clickedElem).hasClass("disabled") && !$(clickedElem).parents('.disabled').length) {
let divContainingTheDataTable = $(clickedElem).closest('.dataTables_wrapper');
$('html, body').animate({
scrollTop: $(divContainingTheDataTable).offset().top - 60
}, 200);
}
}
});
相关文章:
- 滚动固定滚动顶部()的跳跃效果
- 当偏移量改变时滚动顶部
- 滚动顶部在滑动后不起作用切换
- 使滚动顶部始终检查
- 页面滚动在粘性页脚布局中保持滚动顶部位置
- 滚动顶部闪烁-Internet Explorer
- j查询滚动顶部麻烦
- 我如何使用滚动顶部()获取HTML文档的位置
- 滚动顶部到元素 - 20px
- JQuery 偏移和滚动顶部问题
- 滚动事件仅在滚动顶部时触发
- 单击并滚动顶部
- 每次在顶部滚动顶部重置
- IE <选择>滚动顶部
- 打开对话框正在更改我的滚动顶部位置
- 为什么有时滚动顶部/滚动左不可写
- 滚动顶部 Jquery
- 数据表在页面更改时滚动顶部
- 使用滚动顶部显示滚动的像素
- 可以 jQuery invalidHandler 通过父窗口中的 iframe 滚动顶部