Выберите функцию переключения для DataTables - PullRequest
0 голосов
/ 08 июля 2019

У меня есть несколько таблиц данных на странице. Каждая таблица данных имеет переключатель, позволяющий выбрать все строки.

После инициализации каждой таблицы данных я отправляю каждую точку в следующую функцию:

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, то он ломается и перестает работать.

Я знаю, что мне нужно как-то отменить привязку или изменить стратегию, просто не знаю, как именно, и буду признателен за некоторые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...