Javascript jQuery DataTables按钮在加载后触发,导致无限循环

Javascript jQuery DataTables按钮在加载后触发,导致无限循环,javascript,jquery,datatables,Javascript,Jquery,Datatables,我有一个dataTable,它可以根据用户检查的内容过滤列 我希望用户能够导出他们当前在dataTable上看到的内容。因此,我在每个复选框上都有一个data column属性,它可以让我根据是否选中它来知道应该显示或隐藏哪个列 我已按如下方式初始化我的表: var table = $('.my-table').DataTable({ pageLength:25, fixedHeader: true, sScrollX: true,

我有一个dataTable,它可以根据用户检查的内容过滤列

我希望用户能够导出他们当前在dataTable上看到的内容。因此,我在每个复选框上都有一个
data column
属性,它可以让我根据是否选中它来知道应该显示或隐藏哪个列

我已按如下方式初始化我的表:

var table = $('.my-table').DataTable({
        pageLength:25,
        fixedHeader: true,
        sScrollX: true,
        dom: '<"html5buttons"B>lTfgitp',
        buttons: [
            {extend: 'copy'},
            {extend: 'csv', 
                title: 'Testing',
                exportOptions: {
                    columns: get_columns_to_export(),
                    rows: { selected: true }
                },
                'customize': function(doc){
                    console.log("==CSV DOC==");
                    console.log(doc);
                }
            },
            {extend: 'excel', 
                title: 'Testing',
                exportOptions: {
                    columns: get_columns_to_export(),
                    rows: { selected: true }
                },
                'customize': function(doc){
                    console.log("==EXCEL DOC==");
                    var sheet = doc.xl.worksheets['sheet1.xml'];
                    console.log(sheet);
                }
            },
            {extend: 'print',
                customize: function (win){
                    $(win.document.body).addClass('white-bg');
                    $(win.document.body).css('font-size', '10px');

                    $(win.document.body).find('table')
                            .addClass('compact')
                            .css('font-size', 'inherit');
                }
            }
        ]
});
这会导致无限循环发生。我还尝试在触发器操作之后添加一个
return
语句,但出于某种原因,它忽略了这一点,直接进入我在
表的原始声明中声明的原始
customize
函数


如何使用正确的列号更新数据表,同时又不导致无限循环?

将exportOptions部分更改为

exportOptions: {
                    columns: get_columns_to_export.bind(this),
                    rows: { selected: true }
                },
Datatables列选择器可以采用各种选项,其中包括字符串或函数

在原始示例中,在编译时调用函数get_columns_to_export(),该函数返回列的初始状态,即分配给列选择器的列

因为列是动态的,所以需要使用列选择器的函数形式,每次执行按钮操作时都会调用该函数形式


无限循环是由触发函数调用的单击函数中的按钮触发的。摆脱它以停止循环。

这很有效!我不确定是否有办法解决这个问题,但是当我更新
exportOptions
时,它现在为每一行调用
get\u columns\u to\u export
。由于每行的列数不会改变,有没有办法重复调用每行的函数?
exportOptions: {
                    columns: get_columns_to_export.bind(this),
                    rows: { selected: true }
                },