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