JQuery 3
Начиная с jQuery 3, removeAttr
делает не для соответствующего свойства больше false
:
До jQuery 3.0 использование .removeAttr()
для логического атрибута, такого как checked
, selected
или readonly
, также устанавливало бы соответствующее именованное свойство на false
. Такое поведение было необходимо для древних версий Internet Explorer, но не является правильным для современных браузеров, поскольку атрибут представляет начальное значение, а свойство представляет текущее (динамическое) значение.
Почти всегда ошибочно использовать .removeAttr( "checked" )
для элемента DOM. Единственный раз, когда это может быть полезно, - это если позже DOM будет сериализован обратно в строку HTML. Во всех остальных случаях следует использовать .prop( "checked", false )
.
Changelog
Следовательно, только .prop('checked',false)
является правильным способом при использовании этой версии.
Оригинальный ответ (с 2011 г.):
Для атрибутов, которые имеют базовые логические свойства (из которых checked
- одно), removeAttr
автоматически устанавливает базовое свойство в false
. (Обратите внимание, что это одно из исправлений обратной совместимости, добавленных в jQuery 1.6.1).
Итак, любой из них будет работать ... но второй приведенный вами пример (с использованием prop
) является более правильным из двух. Если ваша цель - снять флажок, вы действительно хотите повлиять на свойство , а не на атрибут, и вам не нужно проходить через removeAttr
.