I am concerned about memory leaks in my application as I use jquery\'s html() method a lot to replace content in the the DOM. I just want to make sure that not of these
Yes they are.
If you use jQuerys .html()
it will take care of you. Looking into the jQuery source, this line is getting called:
jQuery.cleanData( this[i].getElementsByTagName("*") );
which effectively cleans up all data and events. This of course won't work if you're overwritting a DOMnodes innerHTML
property explicitly.
It seems using bind in jQuery, you can have more control over the events and handlers such as in this example from http://api.jquery.com/unbind/
var myHandlers = {};
myHandlers.handler = function() {
alert('The quick brown fox jumps over the lazy dog.');
};
$('#foo').bind('click', handler);
$('#foo').unbind('click', handler);
delete(myHandlers.handler);
But I don't know if that is possible to control with the normal jQuery syntax of $('a').click() since all that is returned is a jQuery object and no references to the handlers or events.
There is related discussion to this question here on stack overflow:
javascript memory leaks