fix clone(true) for IE

This commit is contained in:
Brandon Aaron 2007-09-13 16:45:53 +00:00
parent 08a6acc362
commit 500ff12d5d

View File

@ -234,16 +234,22 @@ jQuery.fn = jQuery.prototype = {
return this.outerHTML ? jQuery(this.outerHTML)[0] : this.cloneNode(true); return this.outerHTML ? jQuery(this.outerHTML)[0] : this.cloneNode(true);
}); });
if (events === true) { // Need to set the expando to null on the cloned set if it exists
var clone = ret.find("*").andSelf(); // 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) { this.find("*").andSelf().each(function(i) {
var events = jQuery.data(this, "events"); var events = jQuery.data(this, "events");
for ( var type in events ) for ( var type in events )
for ( var handler in events[type] ) for ( var handler in events[type] )
jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data); jQuery.event.add(clone[i], type, events[type][handler], events[type][handler].data);
}); });
}
// Return the cloned set // Return the cloned set
return ret; return ret;