]> source.dussan.org Git - jquery.git/commitdiff
Fix #12127, fer real. IE9/10 check state on clone. Close gh-875.
authorDaniel Chatfield <chatfielddaniel@googlemail.com>
Thu, 26 Jul 2012 02:23:24 +0000 (22:23 -0400)
committerDave Methvin <dave.methvin@gmail.com>
Thu, 26 Jul 2012 02:23:24 +0000 (22:23 -0400)
AUTHORS.txt
src/manipulation.js
test/unit/manipulation.js

index 774d11b320e31d5fe2fcda676cb10b23dabba00b..51200abaf326cf9e6fa4e58848745e62b1e53c52 100644 (file)
@@ -129,3 +129,4 @@ David Benjamin <davidben@mit.edu>
 Uri Gilad <antishok@gmail.com>
 Chris Faulkner <thefaulkner@gmail.com>
 Elijah Manor <elijah.manor@gmail.com>
+Daniel Chatfield <chatfielddaniel@googlemail.com>
index 212eaf6bb229be128f811acf4c2e1a27f32a3cf6..d1dcb3768b5b46dcba4fc7fe7aad022a34e34713 100644 (file)
@@ -455,9 +455,8 @@ function cloneFixAttributes( src, dest ) {
                // IE6-8 fails to persist the checked state of a cloned checkbox
                // or radio button. Worse, IE6-7 fail to give the cloned element
                // a checked appearance if the defaultChecked value isn't also set
-               if ( src.checked ) {
-                       dest.defaultChecked = dest.checked = src.checked;
-               }
+
+               dest.defaultChecked = dest.checked = src.checked;
 
                // IE6-7 get confused and end up setting the value of a cloned
                // checkbox/radio button to an empty string instead of "on"
index 31426e73986694eba1aa67f5544f47cc2ffe005b..4038f1a746d88d709667b72ba6d0c15a932edcfa 100644 (file)
@@ -1895,3 +1895,15 @@ test("html() - script exceptions bubble (#11743)", function() {
                ok( false, "error ignored" );
        }, "exception bubbled from remote script" );
 });
+
+test("checked state is cloned with clone()", function(){
+       expect(2);
+
+       var elem = jQuery.parseHTML("<input type='checkbox' checked='checked'/>")[0];
+       elem.checked = false;
+       equal( jQuery(elem).clone().attr("id","clone")[0].checked, false, "Checked false state correctly cloned" );
+       
+       elem = jQuery.parseHTML("<input type='checkbox'/>")[0];
+       elem.checked = true;
+       equal( jQuery(elem).clone().attr("id","clone")[0].checked, true, "Checked true state correctly cloned" );
+});