With the introduction of the prop method, now I need to know the accepted way of unchecking a checkbox. Is it:
As of jQuery 3,
removeAttr does not set the corresponding property to
Prior to jQuery 3.0, using
.removeAttr()on a boolean attribute such as
readonlywould also set the corresponding named property to
false. This behavior was required for ancient versions of Internet Explorer but is not correct for modern browsers because the attribute represents the initial value and the property represents the current (dynamic) value.
It is almost always a mistake to use
.removeAttr( "checked" )on a DOM element. The only time it might be useful is if the DOM is later going to be serialized back to an HTML string. In all other cases,
.prop( "checked", false )should be used instead.
.prop('checked',false) is correct way when using this version.
For attributes which have underlying boolean properties (of which
checked is one),
removeAttr automatically sets the underlying property to
false. (Note that this is among the backwards-compatibility "fixes" added in jQuery 1.6.1).
So, either will work... but the second example you gave (using
prop) is the more correct of the two. If your goal is to uncheck the checkbox, you really do want to affect the property, not the attribute, and there's no need to go through
removeAttr to do that.