phpneguru
@phpneguru

Как выделить все checkbox с помощью js?

Возникла проблема с кодом:
function selectAllCategory(btn) {
    var checkbox = $(btn).siblings('.filter-second__list').find('.filter-second__checkbox');
    // Programmatically change the `checked` property:'
    $(btn).on('click', function() {
        for (var i = 0; i < checkbox.length; i++) {
            console.log(i);
            if ($(this).is(':checked')) {
                checkbox[i].checked = true;
                triggerEvent(checkbox[i], 'change');
            } else {
                checkbox[i].checked = false;
                triggerEvent(checkbox[i], 'change');
            }
        }
    });
}

В консоли получаю ошибку: Uncaught ReferenceError: triggerEvent is not defined
При этом выделяется/снимается только с одного подэлемента. В цикле for - вообще в консоли показывается цифра 0 вместо количества искомых элементов.
Вот где все это делается:
  • Вопрос задан
  • 441 просмотр
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Всё логично. Функция triggerEvent не определена, вам об этом английским по белому пишут.
А поскольку ошибка возникает на первом же шаге цикла, то обрабатывается только один чекбокс и дальше нуля индекс цикла не уходит.
Ответ написан
@zav19791979
Как совершенно верно сказал Rsa97 у вас не определен метод triggerEvent, вам необходимо определить его перед вашим методом и тогда будет счастье)
function triggerEvent(checkbox) {
        checkbox.checked = true; //  отметить переданный чекбокс (без использования jQuery)
        // checkbox.attr('checked', true); // то же самое но уже с использованием jQuery
    }

    function selectAllCategory(btn) {
        ...
        ...
        ...
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы