删除带有监听器的DOM元素会导致内存泄漏吗?

3

假设我有以下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();

这些事件监听器会自动解除和释放吗?还是会导致内存泄漏?在移除之前,最好先删除这些监听器吗?


https://dev59.com/rGcs5IYBdhLWcg3w1nhq - dsgriffin
1个回答

2
根据jQuery 文档remove方法也会移除所有绑定的事件处理函数。

除了元素本身,还会移除所有绑定的事件以及与元素相关联的jQuery数据。

然而,请看一下这个问题jQuery memory leak with DOM removal,似乎曾经存在内存泄漏问题(请注意,该问题相当古老,现在应该已经解决了)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接