Это правильный способ проверки и снятия флажков с помощью jQuery, так как это кросс-платформенный стандарт, и будет разрешать перепосты формы.
$('.myCheckBox').each(function(){ this.checked = true; });
$('.myCheckBox').each(function(){ this.checked = false; });
Делая это, вы используете стандарты JavaScript для установки и снятия флажков, поэтому любой браузер, который правильно реализует свойство «checked» элемента checkbox, будет без проблем выполнять этот код. Это должно быть всеми основными браузерами, но я не могу протестировать его до Internet Explorer 9.
Проблема (jQuery 1.6):
Как только пользователь нажимает на флажок, этот флажок перестает отвечать на изменения атрибута «флажок».
Вот пример того, как атрибут checkbox не может выполнить работу после того, как кто-то щелкнул флажок (это происходит в Chrome).
Fiddle
Решение:
Используя JavaScript-свойство «checked» для элементов DOM , мы можем решить проблему напрямую, вместо того, чтобы пытаться манипулировать DOM, выполняя то, что мы хотим сделать делаем.
Fiddle
Этот плагин будет изменять свойство selected любых элементов, выбранных jQuery, и успешно устанавливать и снимать флажки при любых обстоятельствах. Поэтому, хотя это может показаться чрезмерным решением, оно улучшит работу вашего сайта и предотвратит недовольство пользователей.
(function( $ ) {
$.fn.checked = function(value) {
if(value === true || value === false) {
// Set the value of the checkbox
$(this).each(function(){ this.checked = value; });
}
else if(value === undefined || value === 'toggle') {
// Toggle the checkbox
$(this).each(function(){ this.checked = !this.checked; });
}
return this;
};
})( jQuery );
В качестве альтернативы, если вы не хотите использовать плагин, вы можете использовать следующие фрагменты кода:
// Check
$(':checkbox').prop('checked', true);
// Un-check
$(':checkbox').prop('checked', false);
// Toggle
$(':checkbox').prop('checked', function (i, value) {
return !value;
});