Event: Fix #14544. Remove elem from event handle, close gh-1400.

This also reduces memory leaks if the element is removed without cleaning
events (e.g with native DOM operations).

Not pickable into the 1.x branch because oldIE still needs this.
This commit is contained in:
Ilya Kantor 2013-10-15 17:09:55 +04:00 committed by Dave Methvin
parent c389c2e6ba
commit d0782ed7e8

View File

@ -72,12 +72,9 @@ jQuery.event = {
eventHandle = elemData.handle = function( e ) { eventHandle = elemData.handle = function( e ) {
// Discard the second event of a jQuery.event.trigger() and // Discard the second event of a jQuery.event.trigger() and
// when an event is called after a page has unloaded // when an event is called after a page has unloaded
return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : jQuery.event.dispatch.apply( elem, arguments ) : undefined;
undefined;
}; };
// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
eventHandle.elem = elem;
} }
// Handle multiple events separated by a space // Handle multiple events separated by a space
@ -146,8 +143,6 @@ jQuery.event = {
jQuery.event.global[ type ] = true; jQuery.event.global[ type ] = true;
} }
// Nullify elem to prevent memory leaks in IE
elem = null;
}, },
// Detach an event or set of events from an element // Detach an event or set of events from an element