我在同一页面中有三个,四个,有时五个表,但大多数是在模态对话框中。 会发生的是,我希望不在模态对话框中的表格每页显示10个项目,并且我希望它们在3个模式对话框中显示。
您可以查看working example in jsfiddle。
我使用以下参数初始化我的设置(默认情况下):
var settings = {
"bPaginate": true,
"bLengthChange": false,
"bInfo": true,
"bAutoWidth": false,
'aoColumnDefs': [{
'bSortable': false,
'aTargets': ['nosorting']
}],
'order': [
[0, 'DESC']
]
}
默认情况下,每页有10条记录作为限制。 之后,我需要验证表是否属于模态,如果是,则添加属性名称' pageLength'指定限制。
if ($(this).closest('.fade').length > 0) {
settings.push({
"pageLength": 3
});
}
我认为其中一个问题是因为设置实际上并不是一个对象数组,所以我应该改为: var settings = [];
settings.push({bPaginate: true, bLengthChange: false}); // etc
// or
settings.push({"bPaginate": true, "bLengthChange: false"}); // etc
但是如果我使用这种方法,当我将这个变量添加到插件时,dataTable就不会识别它。
$('.dataTable').dataTable(settings);
答案 0 :(得分:2)
试试这个example。它循环所有表并使用正确的设置逐个创建它们。
js对象中的设置。您可以像settings.pageLength一样简单地否决它。
if ($('.dataTable').length > 0) {
var settings = {
"bPaginate": true,
"bLengthChange": false,
"bInfo": true,
"bAutoWidth": false,
'aoColumnDefs': [{
'bSortable': false,
'aTargets': ['nosorting']
}],
'order': [
[0, 'DESC']
]
}
$('.dataTable').each(function () {
if ($(this).closest('.fade').length > 0) {
settings.pageLength = 3;
}
$(this).dataTable(settings);
});
$('.dataTables_filter').empty();
}