Fixes #8129. Fix cloning multiple selected options in IE8.
authorrwldrn <waldron.rick@gmail.com>
Tue, 1 Feb 2011 22:54:02 +0000 (17:54 -0500)
committerAnton M <obhvsbypqghgc@gmail.com>
Tue, 1 Feb 2011 23:09:51 +0000 (00:09 +0100)
src/manipulation.js
test/unit/manipulation.js

index 1ef19f8..19a6c22 100644 (file)
@@ -503,6 +503,8 @@ jQuery.extend({
                        // proprietary methods to clear the events. Thanks to MooTools
                        // guys for this hotness.
 
+                       cloneFixAttributes( elem, clone );
+
                        // Using Sizzle here is crazy slow, so we use getElementsByTagName
                        // instead
                        srcElements = elem.getElementsByTagName("*");
@@ -514,8 +516,6 @@ jQuery.extend({
                        for ( i = 0; srcElements[i]; ++i ) {
                                cloneFixAttributes( srcElements[i], destElements[i] );
                        }
-
-                       cloneFixAttributes( elem, clone );
                }
 
                // Copy the events from the original to the clone
index e071086..1313783 100644 (file)
@@ -1006,7 +1006,7 @@ test("clone()", function() {
 
 test("clone(form element) (Bug #3879, #6655)", function() {
        expect(6);
-       element = jQuery("<select><option>Foo</option><option selected>Bar</option></select>");
+       var element = jQuery("<select><option>Foo</option><option selected>Bar</option></select>");
 
        equals( element.clone().find("option:selected").val(), element.find("option:selected").val(), "Selected option cloned correctly" );
 
@@ -1026,6 +1026,14 @@ test("clone(form element) (Bug #3879, #6655)", function() {
        equals( clone[0].defaultValue, "foo", "Textarea defaultValue cloned correctly" );
 });
 
+test("clone(multiple selected options) (Bug #8129)", function() {
+       expect(1);
+       var element = jQuery("<select><option>Foo</option><option selected>Bar</option><option selected>Baz</option></select>");
+
+       equals( element.clone().find("option:selected").length, element.find("option:selected").length, "Multiple selected options cloned correctly" );
+
+});
+
 if (!isLocal) {
 test("clone() on XML nodes", function() {
        expect(2);