使用 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 站点引用。