假设我有这个HTML:
<ul class="waka_waka">
<li>Fozzy Bear</li>
<li>Steve Martin</li>
<li>John Candy</li>
</ul>
...然后使用jQuery添加一个事件监听器:
$('ul li').click(function() { console.log('waka_waka!!!'); });
如果在某个时刻突然发生了:
$('.waka_waka').remove();
这些事件侦听器是否会自动分离和释放?或者这实际上是否会导致内存泄漏?在删除之前删除这些侦听器是最佳做法吗?
答案 0 :(得分:2)
根据jQuery DOCS remove
还删除所有绑定事件处理程序
除了元素本身,所有绑定事件和jQuery 与元素相关联的数据将被删除。
但是看看这个问题jQuery memory leak with DOM removal,似乎可能在某一时刻发生了内存泄漏(请注意,这个问题已经很老了,所以现在它应该已经解决了。)