使用 setInterval 时无法将事件添加到 DataTable 分页按钮中
Unable to add event into DataTable Pagination buttons when using setInterval
我正在开发一个 Table 来记录所有操作并根据给定的时间间隔刷新 table。
一切正常,除了使用 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);
} );
到目前为止我尝试了什么:
不同的选择器:
$('#logs_tbl_paginate a').click(function(){
interval_en = false;
clearInterval(aclogs_interval);
});
每个间隔绑定:
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);
尽管在浏览器控制台中手动触发 interval_en = false;
会停止它。仍然找不到问题所在。
在第一个间隔出现之前单击分页按钮也有效。
您可以尝试以下方法:
$('#logs_tbl').on( 'page.dt', function () {
console.log("paginate click");
$('.btn-live,.btn-notlive').prop('class','btn-notlive');
interval_en = false;
} );
此示例由 datatable 站点引用。
我正在开发一个 Table 来记录所有操作并根据给定的时间间隔刷新 table。
一切正常,除了使用 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);
} );
到目前为止我尝试了什么:
不同的选择器:
$('#logs_tbl_paginate a').click(function(){ interval_en = false; clearInterval(aclogs_interval); });
每个间隔绑定:
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);
尽管在浏览器控制台中手动触发 interval_en = false;
会停止它。仍然找不到问题所在。
在第一个间隔出现之前单击分页按钮也有效。
您可以尝试以下方法:
$('#logs_tbl').on( 'page.dt', function () {
console.log("paginate click");
$('.btn-live,.btn-notlive').prop('class','btn-notlive');
interval_en = false;
} );
此示例由 datatable 站点引用。