Javascript 使用setInterval时无法将事件添加到DataTable分页按钮中
我正在处理一个记录所有操作的表,并根据给定的时间间隔刷新该表。 除了使用Javascript 使用setInterval时无法将事件添加到DataTable分页按钮中,javascript,jquery,datatable,Javascript,Jquery,Datatable,我正在处理一个记录所有操作的表,并根据给定的时间间隔刷新该表。 除了使用setInterval外,所有操作都正常,以下是我的代码: var interval = 3000; var interval_en = true; $(document).ready(function() { $('#logs_tbl').DataTable(); $('.paginate_button,.paginate_button.current').click(function(){
setInterval
外,所有操作都正常,以下是我的代码:
var interval = 3000;
var interval_en = true;
$(document).ready(function() {
$('#logs_tbl').DataTable();
$('.paginate_button,.paginate_button.current').click(function(){
e.preventDefault();
console.log("paginate click");
interval_en = false;
}).change(function(e){
e.preventDefault();
console.log("paginate click");
interval_en = false;
});
var aclogs_interval = setInterval(function () {
if(interval_en){
console.log("logging=true");
aclog_refresh(); //This function refreshes the table via Ajax
}else{
console.log("logging stopped");
clearInterval(aclogs_interval);
}
}, interval);
} );
到目前为止,我尝试了什么:
不同的选择器:
每间隔绑定:
通过手动触发interval\u en=false浏览器控制台中的代码>将停止该操作。仍然无法找出哪里出了问题
在第一个间隔出现之前,也可以单击分页按钮。您可以尝试以下操作:
$('#logs_tbl').on( 'page.dt', function () {
console.log("paginate click");
$('.btn-live,.btn-notlive').prop('class','btn-notlive');
interval_en = false;
} );
此示例是按站点引用的。您的第一个代码段不起作用,因为e
未定义。假设这只是一个复制/粘贴错误,我认为代码应该可以工作。我会查看datatable库本身,看看是否有更好的方法“钩住”它们的事件,因为任何具有轮询间隔的解决方案都不如基于事件的方法。为此,我不知道page.dt
,应该正确准备文档。
var aclogs_interval = setInterval(function (e) {
if(interval_en){
console.log("logging=true");
aclog_refresh();
$('.paginate_button,.paginate_button.current').click(function(){
e.preventDefault();
console.log("paginate click");
interval_en = false;
}).change(function(e){
e.preventDefault();
console.log("paginate click");
interval_en = false;
});
}else{
console.log("logging stopped");
clearInterval(aclogs_interval);
}
}, interval);
$('#logs_tbl').on( 'page.dt', function () {
console.log("paginate click");
$('.btn-live,.btn-notlive').prop('class','btn-notlive');
interval_en = false;
} );