С введением метода prop мне теперь нужно знать общепринятый способ снятия флажка. Это:
$('input').filter(':checkbox').removeAttr('checked');
или
$('input').filter(':checkbox').prop('checked',false);
С введением метода prop мне теперь нужно знать общепринятый способ снятия флажка. Это:
$('input').filter(':checkbox').removeAttr('checked');
или
$('input').filter(':checkbox').prop('checked',false);
Ответы:
jQuery 3
Начиная с jQuery 3, removeAttrбольше не устанавливает соответствующее свойство false:
Перед JQuery 3.0, используя
.removeAttr()на булевой атрибуте , такие какchecked,selectedилиreadonlyбы также установить соответствующее имя свойствоfalse. Такое поведение требовалось для старых версий Internet Explorer, но неверно для современных браузеров, поскольку атрибут представляет начальное значение, а свойство представляет текущее (динамическое) значение.Практически всегда ошибочно использовать
.removeAttr( "checked" )элемент DOM. Единственный раз, когда это может быть полезно, - это если DOM позже будет сериализован обратно в строку HTML. Во всех остальных случаях.prop( "checked", false )следует использовать вместо него.
Следовательно, только .prop('checked',false)правильный способ использования этой версии.
Оригинальный ответ (с 2011 г.):
Для атрибутов, которые имеют базовые логические свойства (из которых checkedодно), removeAttrдля базового свойства автоматически устанавливается значение false. (Обратите внимание, что это одно из «исправлений» обратной совместимости, добавленных в jQuery 1.6.1).
Итак, любой из них будет работать ... но второй пример, который вы дали (используя prop), является более правильным из двух. Если ваша цель - снять флажок, вы действительно хотите повлиять на свойство , а не на атрибут, и для этого нет необходимости removeAttr.
removeProp()] для удаления собственных свойств, таких как отмечен, отключен или выбран. Это приведет к полному удалению свойства, и после удаления его нельзя будет снова добавить к элементу. Используйте, .prop()чтобы установить для этих свойств значение false. вместо." removePropдействительно предназначен для использования только с настраиваемыми свойствами.
use checked: true, false свойство флажка.
JQuery:
if($('input[type=checkbox]').is(':checked')) {
$(this).prop('checked',true);
} else {
$(this).prop('checked',false);
}
Я рекомендую использовать оба, prop и attr, потому что у меня были проблемы с Chrome, и я решил их, используя обе функции.
if ($(':checkbox').is(':checked')){
$(':checkbox').prop('checked', true).attr('checked', 'checked');
}
else {
$(':checkbox').prop('checked', false).removeAttr('checked');
}
$("input[type='checkbox'], input[type='radio']").prop("checked", false).attr("checked", false).removeAttr("checked");
Другой альтернативой тому же является фильтрация по атрибуту type = checkbox :
$('input[type="checkbox"]').removeAttr('checked');
или
$('input[type="checkbox"]').prop('checked' , false);
Помните, что разница между атрибутами и свойствами может быть важна в определенных ситуациях. До jQuery 1.6 метод .attr () иногда учитывал значения свойств при извлечении некоторых атрибутов, что могло вызвать несогласованное поведение. Начиная с jQuery 1.6, метод .prop () предоставляет способ явного извлечения значений свойств, а .attr () извлекает атрибуты.
Узнать больше ...