Commit 108f308e authored by Brandon Aaron's avatar Brandon Aaron

Fix for #921 (IE clones events)

parent d0c68580
...@@ -852,11 +852,30 @@ jQuery.fn = jQuery.prototype = { ...@@ -852,11 +852,30 @@ jQuery.fn = jQuery.prototype = {
* @cat DOM/Manipulation * @cat DOM/Manipulation
*/ */
clone: function(deep) { clone: function(deep) {
return this.pushStack( jQuery.map( this, function(a){ // Need to remove events on the element and its descendants
a = a.cloneNode( deep != undefined ? deep : true ); var $this = this.add(this.find("*"));
a.$events = null; // drop $events expando to avoid firing incorrect events $this.each(function() {
return a; this._$events = {};
for (var type in this.$events)
this._$events[type] = jQuery.extend({},this.$events[type]);
}).unbind();
// Do the clone
var r = this.pushStack( jQuery.map( this, function(a){
return a.cloneNode( deep != undefined ? deep : true );
}) ); }) );
// Add the events back to the original and its descendants
$this.each(function() {
var events = this._$events;
for (var type in events)
for (var handler in events[type])
jQuery.event.add(this, type, events[type][handler], events[type][handler].data);
this._$events = null;
});
// Return the cloned set
return r;
}, },
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment