Permalink
Browse files

Fix #12127, fer real. IE9/10 check state on clone. Close gh-875.

  • Loading branch information...
1 parent a475f1a commit 155855b2a9bd95219871210ae7dcacd2a5f7e117 @danielchatfield danielchatfield committed with dmethvin Jul 26, 2012
Showing with 15 additions and 3 deletions.
  1. +1 −0 AUTHORS.txt
  2. +2 −3 src/manipulation.js
  3. +12 −0 test/unit/manipulation.js
View
@@ -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>
View
@@ -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"
View
@@ -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" );
+});

2 comments on commit 155855b

This is apparently broken in the jQuery v1.12.4 that comes with Wordpress.
Run this at the console and you will get true, not false:

var elem = jQuery.parseHTML("<input type='checkbox' checked='checked'/>")[0];
elem.checked = false;
console.log( jQuery(elem).clone()[0].checked);
Member

mgol replied Dec 7, 2016

@programmin1 This works fine for me in IE 10: http://jsbin.com/dimowe/edit?html,js,console

If you can tweak this jsbin until it shows the issue you have, please open a new issue with the link to this jsbin.

Please sign in to comment.