atom feed22 messages in com.googlegroups.jquery-en[jQuery] Memory leaks forever
FromSent OnAttachments
Franck MarciaMar 25, 2006 7:13 am 
Dave MethvinMar 25, 2006 8:55 am 
Franck MarciaMar 25, 2006 9:08 am 
John ResigMar 25, 2006 9:15 am 
Dave MethvinMar 25, 2006 10:07 am 
Michael GearyMar 25, 2006 10:07 am 
Franck MarciaMar 25, 2006 10:39 am 
Michael GearyMar 25, 2006 10:56 am 
Dave MethvinMar 25, 2006 11:05 am 
Franck MarciaMar 25, 2006 1:45 pm 
Michael GearyMar 25, 2006 2:19 pm 
Franck MarciaMar 25, 2006 5:16 pm 
Dave MethvinMar 26, 2006 9:02 am 
Michael GearyMar 26, 2006 1:24 pm 
Franck MarciaMar 28, 2006 2:25 am 
Dave MethvinMar 28, 2006 5:45 am 
John ResigMar 28, 2006 7:30 am 
Franck MarciaMar 28, 2006 8:26 am 
jqu...@vikas.mailshell.comMar 28, 2006 8:57 am 
John ResigMar 28, 2006 9:03 am 
Michael GearyMar 28, 2006 9:14 am 
jqu...@vikas.mailshell.comMar 28, 2006 9:24 am 
Subject:[jQuery] Memory leaks forever
From:Michael Geary (M.@Geary.com)
Date:Mar 25, 2006 10:07:30 am
List:com.googlegroups.jquery-en

I'm not sure what is causing this leak, unless all this code were nested inside another function, in which case it would be the closure circular reference leak.

I would be curious to know if my $.closure patch fixes it. Would you want to try it and let me know? I've been meaning to post something about this, but in the meantime here is the code:

http://mg.to/jquery-code/closure.js

It's not a .patch file, just edit the code into a test copy of jQuery. You'll need to add the $.closure() function itself, and then in addEvent() there is a one-line change. This line:

handlers[handler.$$guid] = handler;

needs to be changed to:

handlers[handler.$$guid] = $.closure(handler);

-Mike

From: Franck Marcia

I'm working on an interface which builds lists with data retrieved by XHR. Every item of the list has got several functions bounded to click event. And it seems that a lot of memory leaks, with IE, of course.

Basically, here is the structure of the code:

var myList = {};

myList.build = function(id) { ... var myVars = []; for (var i in items) { $('#content').append( myVars[i] = $.DIV(...) ... } ... for (var i in myVars) $(myVars[i]).bind('click', myList.react); ... };

list.react = function(e) { ... }; ...