From 500ff12d5da5e0d454663203101d65c9ed37cffa Mon Sep 17 00:00:00 2001 From: Brandon Aaron Date: Thu, 13 Sep 2007 16:45:53 +0000 Subject: [PATCH] fix clone(true) for IE --- src/core.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/core.js b/src/core.js index 140208d16..eb135400a 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;