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