页面上有多个数据表。每个数据表都有一个切换复选框,可以选择所有行。
启动每个数据表后,我将每个dt发送到以下函数:
function clickable(DataTable) {
if (typeof DataTable == 'undefined'){return};
DataTable.on("click", "th.select-checkbox", function() {
var tableID = DataTable.table().node().id;
var toggler = $("#" + tableID + " th.select-checkbox");
select(toggler);
}).on("select deselect", function() {
var tableID = DataTable.table().node().id;
var toggler = $("#" + tableID + " th.select-checkbox");
deselect(toggler);
});
function select(toggler){
if (toggler.hasClass("selected")) {
DataTable.rows().deselect();
toggler.removeClass("selected");
} else {
DataTable.rows({ search: 'applied', page: 'current' }).select();
toggler.addClass("selected");
}
}
function deselect(toggler){
if (DataTable.rows({
selected: true
}).count() !== DataTable.rows().count()) {
toggler.removeClass("selected");
} else {
toggler.addClass("selected");
}
}
}
除了代码可能更漂亮之外,我还有一个问题是正在重写var切换器。这意味着我只能选择和取消选择一个数据表。但是,如果我在一个dt上切换选择,然后在另一个dt上单击切换器,则它将中断并停止工作。
我知道我需要以某种方式取消绑定或更改策略,只是不确定具体如何,并且会欣赏一些建议。