Я знаю, что это старый, но вопрос был немного двусмысленным в том, что toggle может означать, что каждый флажок должен переключать свое состояние, что бы это ни было.Если вы отметили 3 и 2 не отмечены, переключение сделает первые 3 не проверенными, а последние 2 проверенными.
Для этого ни одно из решений здесь не работает, поскольку они заставляют все флажки иметь одинаковое состояние, а не переключать состояние каждого флажка.Выполнение $(':checkbox').prop('checked')
для многих флажков возвращает логическое И между всеми двоичными свойствами .checked
, т. Е. Если одно из них не проверено, возвращается значение false
.
Вам необходимо использовать .each()
, если выхотите на самом деле переключать каждое состояние флажка, а не делать их равными, например,
$(':checkbox').each(function () { this.checked = !this.checked; });
Обратите внимание, что вам не нужен $(this)
внутри обработчика, поскольку свойство .checked
существует во всех браузерах.