]> source.dussan.org Git - jquery.git/commitdiff
Set corresponding property to false when removing boolean attributes. Fixes #9094
authortimmywil <tim.willison@thisismedium.com>
Wed, 4 May 2011 15:29:38 +0000 (11:29 -0400)
committertimmywil <tim.willison@thisismedium.com>
Wed, 4 May 2011 15:29:38 +0000 (11:29 -0400)
src/attributes.js
test/unit/attributes.js

index da63a3334324d8ae51dc89864ea11851a99f8590..9fdbbd575106dc6ec3231367bdb297424935222a 100644 (file)
@@ -369,6 +369,12 @@ jQuery.extend({
                                jQuery.attr( elem, name, "" );
                                elem.removeAttributeNode( elem.getAttributeNode( name ) );
                        }
+
+                       // Set corresponding property to false for boolean attributes
+                       name = jQuery.propFix[ name ] || name;
+                       if ( !rinvalidChar.test( name ) && typeof elem[ name ] === "boolean" ) {
+                               elem[ name ] = false;
+                       }
                }
        },
 
index b20a14fcb66e162e3f0bbe199264c05b59d5a1a8..80efed8291a21ad6406cd0342d57b54c8bd901f0 100644 (file)
@@ -405,12 +405,17 @@ test("attr('tabindex', value)", function() {
 });
 
 test("removeAttr(String)", function() {
-       expect(5);
+       expect(7);
        equals( jQuery("#mark").removeAttr( "class" )[0].className, "", "remove class" );
        equals( jQuery("#form").removeAttr("id").attr("id"), undefined, "Remove id" );
        equals( jQuery("#foo").attr("style", "position:absolute;").removeAttr("style").attr("style"), undefined, "Check removing style attribute" );
        equals( jQuery("#form").attr("style", "position:absolute;").removeAttr("style").attr("style"), undefined, "Check removing style attribute on a form" );
        equals( jQuery("#fx-test-group").attr("height", "3px").removeAttr("height").css("height"), "1px", "Removing height attribute has no effect on height set with style attribute" );
+       
+       jQuery("#check1").removeAttr("checked").prop("checked", true).removeAttr("checked");
+       equals( document.getElementById("check1").checked, false, "removeAttr sets boolean properties to false" );
+       jQuery("#text1").prop("readOnly", true).removeAttr("readonly");
+       equals( document.getElementById("text1").readOnly, false, "removeAttr sets boolean properties to false" );
 });
 
 test("prop(String, Object)", function() {