Make sure .clone(true) correctly clones namespaced events. Fixes #4537.
[jquery.git] / src / manipulation.js
index 442a14d..cd0732c 100644 (file)
@@ -7,7 +7,7 @@ var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
        rtbody = /<tbody/i,
        rhtml = /<|&#?\w+;/,
        rnocache = /<(?:script|object|embed|option|style)/i,
-       // checked="checked" or checked (html5)
+       // checked="checked" or checked
        rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
        wrapMap = {
                option: [ 1, "<select multiple='multiple'>", "</select>" ],
@@ -159,7 +159,7 @@ jQuery.fn.extend({
                                }
 
                                if ( elem.parentNode ) {
-                                        elem.parentNode.removeChild( elem );
+                                       elem.parentNode.removeChild( elem );
                                }
                        }
                }
@@ -184,7 +184,7 @@ jQuery.fn.extend({
        },
 
        clone: function( dataAndEvents, deepDataAndEvents ) {
-               dataAndEvents = dataAndEvents == null ? true : dataAndEvents;
+               dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
                deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
 
                return this.map( function () {
@@ -353,8 +353,8 @@ function cloneCopyEvent( src, dest ) {
        }
 
        var internalKey = jQuery.expando,
-                       oldData = jQuery.data( src ),
-                       curData = jQuery.data( dest, oldData );
+               oldData = jQuery.data( src ),
+               curData = jQuery.data( dest, oldData );
 
        // Switch to use the internal data object, if it exists, for the next
        // stage of data copying
@@ -368,7 +368,7 @@ function cloneCopyEvent( src, dest ) {
 
                        for ( var type in events ) {
                                for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
-                                       jQuery.event.add( dest, type, events[ type ][ i ], events[ type ][ i ].data );
+                                       jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
                                }
                        }
                }
@@ -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
@@ -537,7 +537,7 @@ jQuery.extend({
                }
                // Return the cloned set
                return clone;
-  },
+},
        clean: function( elems, context, fragment, scripts ) {
                context = context || document;