From: timmywil Date: Wed, 4 May 2011 15:29:38 +0000 (-0400) Subject: Set corresponding property to false when removing boolean attributes. Fixes #9094 X-Git-Tag: 1.6.1rc1~31 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=480b88ca37fb3aff4ba043298a8fb419905d3f21;p=jquery.git Set corresponding property to false when removing boolean attributes. Fixes #9094 --- diff --git a/src/attributes.js b/src/attributes.js index da63a3334..9fdbbd575 100644 --- a/src/attributes.js +++ b/src/attributes.js @@ -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; + } } }, diff --git a/test/unit/attributes.js b/test/unit/attributes.js index b20a14fcb..80efed829 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -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() {