У меня есть несколько таблиц данных на странице. Каждая таблица данных имеет переключатель, позволяющий выбрать все строки.
После инициализации каждой таблицы данных я отправляю каждую точку в следующую функцию:
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 toggler. Это означает, что я могу выбрать и отменить выбор только одного объекта данных. Но если я переключаю выбор на одном dt, а затем нажимаю на переключатель на другом dt, то он ломается и перестает работать.
Я знаю, что мне нужно как-то отменить привязку или изменить стратегию, просто не знаю, как именно, и буду признателен за некоторые предложения.