在我的页面上,我正在运行一个datatables init脚本,它可以一次初始化多个表。现在让我们说我想改变一些选择,例如禁用过滤,在其中一个表上但不是全部,最好的方法是什么?
示例:http://jsfiddle.net/HEDvf/1165/
$(document).ready(function() {
$('.dataTable').dataTable({
"sPaginationType": "full_numbers"
});
$('#example2').dataTable({
"bFilter": false
});
});
正如您所看到的,我在html中加载了两个表,我通过选择'.datatable'类同时初始化它们,这两个类都有。 然后我想禁用第二个表的过滤,选择这个表我使用id'example2',只有第二个表有。但是,更改此表的设置不起作用,弹出窗口表示我无法重新初始化表,但是否应该更改已初始化表的选项?
答案 0 :(得分:3)
您可以通过调用不带参数的dataTable来访问现有的DataTable对象:
var dt = $('#example2').dataTable();
我不知道哪些值能够在事后被修改,因此它可能会或可能不会改变它:
dt.DataTable.settings.bFiltered = false;
如果您需要在初始化时执行此操作,我可以考虑两个选项。首先,是在调用dataTable
之前将其过滤掉$('.dataTable').not('#example2').dataTable(...);
$('#example2').dataTable(.. other options ...);
或者,创建一种在html级别设置这些选项的机制:
$('.dataTable').each(function(k,ele) {
ele = $(ele);
var opts = {
sPaginationType: ele.data('pagination-type') || 'full_numbers',
bFilter: ele.data('bfilter') !== 'false'
}
// or only set it if it exists
if (ele.data('bfilter')) {
opts.bFilter = ele.data('bfilter') === 'true';
}
ele.dataTable(opts);
});
这可能有点矫枉过正,但你可以使html类似于:
<div class="datatable" data-bfilter="false" data-pagination-type="mypagination_option"></div>