]> source.dussan.org Git - jquery.git/commitdiff
let .attr(checked|selected, true) update the property
authorRichard Gibson <richard.gibson@gmail.com>
Sun, 16 Dec 2012 15:39:19 +0000 (10:39 -0500)
committerRichard Gibson <richard.gibson@gmail.com>
Sun, 16 Dec 2012 15:39:19 +0000 (10:39 -0500)
src/attributes.js
test/unit/attributes.js

index bba4efe39be2171ebcf2e1a877d4d709b0fc3681..6da68ef11be691072c50f099089757967cf01263 100644 (file)
@@ -489,7 +489,7 @@ boolHook = {
 
                // Use defaultChecked and defaultSelected for oldIE
                } else {
-                       elem[ jQuery.camelCase( "default-" + name ) ] = true;
+                       elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
                }
 
                return name;
index a4be43aa572498a98691d19c4163f6039a079300..84f406d1f116cee90a071c7724b5f696b2b5344c 100644 (file)
@@ -247,7 +247,7 @@ test( "attr(Hash)", function() {
 });
 
 test( "attr(String, Object)", function() {
-       expect( 67 );
+       expect( 71 );
 
        var div = jQuery("div").attr("foo", "bar"),
                i = 0,
@@ -281,7 +281,14 @@ test( "attr(String, Object)", function() {
        equal( $input.attr("name"), "something", "Check element creation gets/sets the name attribute." );
        equal( $input.attr("id"), "specified", "Check element creation gets/sets the id attribute." );
 
-       // As of fixing #11115, we make no promises about the effect of .attr on boolean properties
+       // As of fixing #11115, we only guarantee boolean property update for checked and selected
+       $input = jQuery("<input type='checkbox'/>").attr( "checked", true );
+       equal( $input.prop("checked"), true, "Setting checked updates property (verified by .prop)" );
+       equal( $input[0].checked, true, "Setting checked updates property (verified by native property)" );
+       $input = jQuery("<option/>").attr( "selected", true );
+       equal( $input.prop("selected"), true, "Setting selected updates property (verified by .prop)" );
+       equal( $input[0].selected, true, "Setting selected updates property (verified by native property)" );
+
        $input = jQuery("#check2");
        $input.prop( "checked", true ).prop( "checked", false ).attr( "checked", true );
        equal( $input.attr("checked"), "checked", "Set checked (verified by .attr)" );