]> source.dussan.org Git - jquery.git/commitdiff
Made .clone(true) also copy over element data. Fixes #4191.
authorJohn Resig <jeresig@gmail.com>
Wed, 9 Dec 2009 21:28:58 +0000 (13:28 -0800)
committerJohn Resig <jeresig@gmail.com>
Wed, 9 Dec 2009 21:28:58 +0000 (13:28 -0800)
src/manipulation.js
test/unit/manipulation.js

index 0c2753e968200c98c7b983ebfaf58f649740ded9..930b3d9b92c97703e1ede4e1234c8ed973dc94ad 100644 (file)
@@ -277,13 +277,7 @@ function cloneCopyEvent(orig, ret) {
                        return;
                }
 
-               var events = jQuery.data( orig[i], "events" );
-
-               for ( var type in events ) {
-                       for ( var handler in events[ type ] ) {
-                               jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
-                       }
-               }
+               jQuery.data( this, jQuery.data( orig[i++] ) );
        });
 }
 
index 4631ead61eac05a8142aec381f4b0e51a79da61d..6de3e14eb2db2ef407f33450985b63d5c27b5ceb 100644 (file)
@@ -549,7 +549,7 @@ test("replaceAll(String|Element|Array&lt;Element&gt;|jQuery)", function() {
 });
 
 test("clone()", function() {
-       expect(28);
+       expect(30);
        equals( 'This is a normal link: Yahoo', jQuery('#en').text(), 'Assert text for #en' );
        var clone = jQuery('#yahoo').clone();
        equals( 'Try them out:Yahoo', jQuery('#first').append(clone).text(), 'Check for clone' );
@@ -594,6 +594,11 @@ test("clone()", function() {
        div = div.clone(true);
        equals( div.length, 1, "One element cloned" );
        equals( div[0].nodeName.toUpperCase(), "DIV", "DIV element cloned" );
+
+       div = jQuery("<div/>").data({ a: true, b: true });
+       div = div.clone(true);
+       equals( div.data("a"), true, "Data cloned." );
+       equals( div.data("b"), true, "Data cloned." );
 });
 
 if (!isLocal) {