gpt4 book ai didi

javascript - 数据表 - 当滚动靠近表格底部时,如何创建监听器?

转载 作者:行者123 更新时间:2023-11-30 19:43:15 25 4
gpt4 key购买 nike

我目前正在使用 datatablesJS(来自 https://datatables.net/)来显示分页数据库的结果数组。因此在初始加载时,用户获得索引 0 和 100 行。

我正在尝试编写一个函数,以便当用户滚动到表格底部附近时,它会查询更多表格并将结果附加到当前数据数组。我有查询设置,但我不知道 jquery 或 datatablesJS 函数会监听滚动到其最大滚动长度底部的距离。有什么建议么?

注意:这个问题似乎类似于On dataTable scroll data should load from server side and append to existing records ,但不同的是我只想在用户滚动到底部时查询。这篇文章和我在 DataTables 文档上看到的是,他们运行超时,直到他们使用 Datatables 的 ajax 参数获取所有数据。

最佳答案

您需要一个函数来检测用户何时滚动到表格底部,并需要另一个函数来获取下一行数据。

这个演示应该给你一些关于如何做到这一点的提示。

$(function() {

var $mytable = $("#myTable");
var count = 3; //initial number of rows
var max = 50; //max number of rows (just for demo)
var $datatable = $mytable.DataTable({
"paging": false,
"bFilter": false
}); //init the datatable and return a refence to it



//listen for scroll and resize and custom 'fetchmore' events
$(window).bind('scroll resize fetchmore', function() {
var viewportHeight = window.innerHeight;
var scrolltop = $(window).scrollTop();
var bottomOfTable = $mytable.offset().top + $mytable.outerHeight();

//console.log(viewportHeight, scrolltop, bottomOfTable);

if ($(window).scrollTop() + viewportHeight >= bottomOfTable) {
if (count < max) {
//console.log("Fetch more data!");
load_more();
$(window).trigger("fetchmore"); //keep triggering this event until we've filled the viewport
}
}



});

function load_more() {
//fetch more data here
count++;
$datatable.row.add([
count + '.1',
count + '.2 (loaded@' + Date.now() + ')'
]).draw(false);
}

//trigger initial fetch
$(window).trigger("fetchmore");
});
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
<link href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css" rel="stylesheet" />
</head>

<body>
<table id="myTable" class="display">
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
</tr>
</thead>
<tbody>
<tr>
<td>1.1</td>
<td>1.2 (initial row)</td>
</tr>
<tr>
<td>2.1</td>
<td>2.2 (initial row)</td>
</tr>
<tr>
<td>3.1</td>
<td>3.2 (initial row)</td>
</tr>
</tbody>
</table>
</body>

关于javascript - 数据表 - 当滚动靠近表格底部时,如何创建监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55183683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com