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

标签 javascript jquery events garbage-collection

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

我注意到,如果我不这样做,一切都会正常进行。浏览器会释放内存和东西吗?如果我在不刷新浏览器的情况下执行数千个这样的 ajax 请求怎么办?我会发生内存泄漏吗?

最佳答案

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

  • 如果您使用 jQuery 删除/替换函数,它们将被清理
  • 如果您使用直接 DOM 函数,它们将不会被清理

在大多数函数文档中,您都有类似于 this one 的注释:

When .html() is used to set an element's content, any content that was in that element is completely replaced by the new content. Additionally, jQuery removes other constructs such as data and event handlers from child elements before replacing those elements with the new content.

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

关于javascript - 当 DOM 更改时,我是否需要清理我的事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21431994/

相关文章:

c# - 这是内存泄漏吗?

javascript - 有多少机器人有 JS "enabled"?

c# - 从母版页调用函数

javascript - 将对象转换为数组

javascript - 如何通过我的模块化 js 结构中的 ajax 调用接收回数据?

jquery - 在 visual studio 中创建网站

jquery - 仅使用 css 类来添加 jquery 功能是否正确?

c# - C# 事件创建的 VB 等效项

javascript - 如何消除 html 中的换行敏感度?

javascript - 按顺序执行2个JavaScript函数