diff --git a/src/core.js b/src/core.js index 140208d1..eb135400 100644 --- a/src/core.js +++ b/src/core.js @@ -233,17 +233,23 @@ jQuery.fn = jQuery.prototype = { var ret = this.map(function(){ return this.outerHTML ? jQuery(this.outerHTML)[0] : this.cloneNode(true); }); - - if (events === true) { - var clone = ret.find("*").andSelf(); + // Need to set the expando to null on the cloned set if it exists + // removeData doesn't work here, IE removes it from the original as well + // this is primarily for IE but the data expando shouldn't be copied over in any browser + var clone = ret.find("*").andSelf().each(function(){ + if ( this[ expando ] != undefined ) + this[ expando ] = null; + }); + + // Copy the events from the original to the clone + if (events === true) this.find("*").andSelf().each(function(i) { var events = jQuery.data(this, "events"); for ( var type in events ) for ( var handler in events[type] ) jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data); }); - } // Return the cloned set return ret;