当DOM更改时,我是否需要清理事件处理程序?

时间:2014-01-29 13:05:53

标签: javascript jquery events garbage-collection

如果我发出删除正文HTML并附加新HTML的ajax请求,是否还需要删除添加到以前HTML中的所有事件处理程序?

我注意到,如果我不这样做,一切正常。浏览器是否释放了内存和内容?如果我在不刷新浏览器的情况下做了数千个这样的ajax请求怎么办?我会得到内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

如果添加jQuery事件处理程序:

  • 如果您使用jQuery删除/替换功能
  • ,它们将被清除
  • 如果您使用直接DOM功能,则不会清除它们

在大多数功能文档中,您的注释类似于this one

  

当.html()用于设置元素的内容时,任何内容都是   在该元素中完全被新内容所取代。   此外,jQuery删除了其他构造,如数据和事件   在用这些元素替换之前,来自子元素的处理程序   新内容。

如果你是连贯的,你就没有内存泄漏,你不必手动删除数据或事件处理程序。将页面保持打开数天并发出数千个Ajax请求并相应地更改屏幕通常没有问题。