Как перехватить программное изменение checkbox?

У меня есть несколько чекбоксов, изменение состояния которых мониторит функция
$("input:checkbox").bind("change", function() {
    alert($(this).attr("value"));
}

Понадобилось добавить выделение всех чекбоксов. Создал кнопку, при нажатии на которую все чекбоксы включаются, либо выключаются:
<a class="btn" href="#" id="all">Выделить все</a>

var all = false;

$("#all").bind('click', function() {
    var checkbox = $("input[name='checkbox[]']");
    if (all == false) {
        checkbox.attr("checked", true);
        all = true;
    }
    else {
        checkbox.attr("checked", false);
        all = false;
    }
});


Но в таком случае первая функция не видит выделения всех чекбосков. Как это исправить?
  • Вопрос задан
  • 3691 просмотр
Пригласить эксперта
Ответы на вопрос 3
ertaquo
@ertaquo
var all = false;

$("#all").bind('click', function() {
var checkbox = $(«input[name='checkbox[]']»);
if (all == false) {
checkbox.attr(«checked», true);
all = true;
}
else {
checkbox.attr(«checked», false);
all = false;
}
});
Ответ написан
Keyten
@Keyten
Просто добавьте при изменении функцию trigger:
// тут if, else
checkbox.trigger('change');
Ответ написан
Комментировать
ertaquo
@ertaquo
var all = false;

$("#all").bind('click', function() {
var checkbox = $(«input[name='checkbox[]']»);
if (all == false) {
checkbox.attr(«checked», true);
all = true;
}
else {
checkbox.attr(«checked», false);
all = false;
}
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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