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