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

@ -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;