Начиная с 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.
@tandu: Вы можете , но вы не должны. Из документации: " Примечание. Не используйте [ removeProp()] для удаления собственных свойств, таких как отмечен, отключен или выбран. Это приведет к полному удалению свойства, и после удаления его нельзя будет снова добавить к элементу. Используйте, .prop()чтобы установить для этих свойств значение false. вместо." removePropдействительно предназначен для использования только с настраиваемыми свойствами.
Помните, что разница между атрибутами и свойствами может быть важна в определенных ситуациях. До jQuery 1.6 метод .attr () иногда учитывал значения свойств при извлечении некоторых атрибутов, что могло вызвать несогласованное поведение. Начиная с jQuery 1.6, метод .prop () предоставляет способ явного извлечения значений свойств, а .attr () извлекает атрибуты.
Ответы:
jQuery 3
Начиная с jQuery 3,
removeAttr
больше не устанавливает соответствующее свойствоfalse
:Изменения
Следовательно, только
.prop('checked',false)
правильный способ использования этой версии.Оригинальный ответ (с 2011 г.):
Для атрибутов, которые имеют базовые логические свойства (из которых
checked
одно),removeAttr
для базового свойства автоматически устанавливается значениеfalse
. (Обратите внимание, что это одно из «исправлений» обратной совместимости, добавленных в jQuery 1.6.1).Итак, любой из них будет работать ... но второй пример, который вы дали (используя
prop
), является более правильным из двух. Если ваша цель - снять флажок, вы действительно хотите повлиять на свойство , а не на атрибут, и для этого нет необходимостиremoveAttr
.источник
removeProp()
] для удаления собственных свойств, таких как отмечен, отключен или выбран. Это приведет к полному удалению свойства, и после удаления его нельзя будет снова добавить к элементу. Используйте,.prop()
чтобы установить для этих свойств значение false. вместо."removeProp
действительно предназначен для использования только с настраиваемыми свойствами.use
checked
: true, false свойство флажка.JQuery:
источник
Я рекомендую использовать оба, prop и attr, потому что у меня были проблемы с Chrome, и я решил их, используя обе функции.
источник
$("input[type='checkbox'], input[type='radio']").prop("checked", false).attr("checked", false).removeAttr("checked");
Другой альтернативой тому же является фильтрация по атрибуту type = checkbox :
или
Помните, что разница между атрибутами и свойствами может быть важна в определенных ситуациях. До jQuery 1.6 метод .attr () иногда учитывал значения свойств при извлечении некоторых атрибутов, что могло вызвать несогласованное поведение. Начиная с jQuery 1.6, метод .prop () предоставляет способ явного извлечения значений свойств, а .attr () извлекает атрибуты.
Узнать больше ...
источник