git.asbjorn.biz
/
jquery.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
08a6acc
)
fix clone(true) for IE
author
Brandon Aaron
<brandon.aaron@gmail.com>
Thu, 13 Sep 2007 16:45:53 +0000
(16:45 +0000)
committer
Brandon Aaron
<brandon.aaron@gmail.com>
Thu, 13 Sep 2007 16:45:53 +0000
(16:45 +0000)
src/core.js
patch
|
blob
|
history
diff --git
a/src/core.js
b/src/core.js
index
140208d
..
eb13540
100644
(file)
--- 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);
});
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);
});
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;
// Return the cloned set
return ret;