Skip to content
Permalink
Browse files

Set the property corresponding to a boolean attribute when setting to…

… true. Fixes #9103.

- Once boolean properties had been modified natively, setting the attribute no longer set the current value
  • Loading branch information
timmywil
timmywil committed May 4, 2011
1 parent 3ed4b22 commit 5195335cf4df62c06488807ae857f64c2d549253
Showing with 8 additions and 3 deletions.
  1. +6 −2 src/attributes.js
  2. +2 −1 test/unit/attributes.js
@@ -301,7 +301,7 @@ jQuery.extend({
return jQuery( elem )[ name ]( value );
}

var ret, hooks,
var ret, hooks, boolProp,
notxml = nType !== 1 || !jQuery.isXMLDoc( elem );

// Normalize the name if needed
@@ -326,7 +326,12 @@ jQuery.extend({
} else {

// Set boolean attributes to the same name
// Also set the DOM property
if ( value === true && !rspecial.test( name ) ) {
boolProp = jQuery.propFix[ name ] || name;
if ( !rinvalidChar.test( boolProp ) && typeof elem[ boolProp ] === "boolean" ) {
elem[ boolProp ] = true;
}
value = name.toLowerCase();
}

@@ -338,7 +343,6 @@ jQuery.extend({
return hooks.get( elem, name );

} else {
var boolProp;

// Align boolean attributes with corresponding properties
// Do not check the property if the name contains characters
@@ -163,7 +163,8 @@ test("attr(String, Object)", function() {
equals( jQuery("#name").attr("name"), "something", "Set name attribute" );
jQuery("#name").attr("name", null);
equals( jQuery("#name").attr("name"), undefined, "Remove name attribute" );
jQuery("#check2").attr("checked", true);

jQuery("#check2").prop("checked", true).prop("checked", false).attr("checked", true);
equals( document.getElementById("check2").checked, true, "Set checked attribute" );
equals( jQuery("#check2").prop("checked"), true, "Set checked attribute" );
equals( jQuery("#check2").attr("checked"), "checked", "Set checked attribute" );

0 comments on commit 5195335

Please sign in to comment.
You can’t perform that action at this time.