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:
fde3d61
)
Fixed memory leak in IE with non-native event types
author
Brandon Aaron
<brandon.aaron@gmail.com>
Fri, 21 Dec 2007 04:53:33 +0000
(
04:53
+0000)
committer
Brandon Aaron
<brandon.aaron@gmail.com>
Fri, 21 Dec 2007 04:53:33 +0000
(
04:53
+0000)
src/event.js
patch
|
blob
|
history
diff --git
a/src/event.js
b/src/event.js
index
d5be7c5
..
30f1b03
100644
(file)
--- a/
src/event.js
+++ b/
src/event.js
@@
-49,10
+49,14
@@
jQuery.event = {
if ( typeof jQuery == "undefined" || jQuery.event.triggered )
return val;
if ( typeof jQuery == "undefined" || jQuery.event.triggered )
return val;
- val = jQuery.event.handle.apply(elem, arguments);
+ val = jQuery.event.handle.apply(arguments.callee.elem, arguments);
return val;
});
return val;
});
+ // Add elem as a property of the handle function
+ // This is to prevent a memory leak with non-native
+ // event in IE.
+ handle.elem = elem;
// Handle multiple events seperated by a space
// jQuery(...).bind("mouseover mouseout", fn);
// Handle multiple events seperated by a space
// jQuery(...).bind("mouseover mouseout", fn);
@@
-87,6
+91,9
@@
jQuery.event = {
// Keep track of which events have been used, for global triggering
jQuery.event.global[type] = true;
});
// Keep track of which events have been used, for global triggering
jQuery.event.global[type] = true;
});
+
+ // Nullify elem to prevent memory leaks in IE
+ elem = null;
},
guid: 1,
},
guid: 1,
@@
-150,6
+157,8
@@
jQuery.event = {
// Remove the expando if it's no longer used
for ( ret in events ) break;
if ( !ret ) {
// Remove the expando if it's no longer used
for ( ret in events ) break;
if ( !ret ) {
+ var handle = jQuery.data( elem, "handle" );
+ if ( handle ) handle.elem = null;
jQuery.removeData( elem, "events" );
jQuery.removeData( elem, "handle" );
}
jQuery.removeData( elem, "events" );
jQuery.removeData( elem, "handle" );
}