From: Brandon Aaron <brandon.aaron@gmail.com>
Date: Thu, 13 Sep 2007 16:45:53 +0000 (+0000)
Subject: fix clone(true) for IE
X-Git-Url: http://git.asbjorn.it/?a=commitdiff_plain;h=500ff12d5da5e0d454663203101d65c9ed37cffa;p=jquery.git

fix clone(true) for IE
---

diff --git a/src/core.js b/src/core.js
index 140208d..eb13540 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;