我担心应用程序中的内存泄漏,因为我使用jquery的html()方法来替换DOM中的内容。 我只是想确保这些事件监听器不会出现在浏览器内存中。
我搜索了jquery文档但没有明确的答案。有谁知道吗?
谢谢你们!
答案 0 :(得分:5)
是的。
如果您使用jQuerys .html()
,它会照顾您。查看jQuery源代码,这一行被调用:
jQuery.cleanData( this[i].getElementsByTagName("*") );
有效清理所有数据和事件。如果您明确覆盖DOMnodes innerHTML
属性,这当然不会起作用。
答案 1 :(得分:1)
似乎在jQuery中使用bind,您可以更好地控制事件和处理程序,例如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);
但我不知道是否可以使用$('a')的正常jQuery语法进行控制。单击()因为返回的所有内容都是jQuery对象,并且没有对处理程序或事件的引用。 / p>
这里有关于堆栈溢出的相关讨论: