fix clone(true) for IE
This commit is contained in:
parent
08a6acc362
commit
500ff12d5d
1 changed files with 10 additions and 4 deletions
12
src/core.js
12
src/core.js
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue