javascript - jQuery empty() 、 click() 和内存管理

标签 javascript jquery html cross-browser jquery-events

只是想知道从内存的 Angular 来看这是如何管理的。

假设我有这个 HTML 页面。

<div id="container">
    <div id="someID"></div>
<div>

和以下 jQuery 代码:

$("#someID").click(function(){
    //do something
});

现在在我脚本的某处我需要清空(清除)#container 中的所有内容:

$("#container").empty();

这会自动删除/解除绑定(bind)点击事件,还是我必须自己做?

这是特定于浏览器的东西吗?

最佳答案

是的,.empty()方法取消绑定(bind)处理程序,并清除 jQuery.cache 中嵌套在 #container 中的所有元素的所有其他数据。

jQuery 仅将单个(通用)处理程序绑定(bind)到一个元素。所有其他处理程序和数据都存储在 jQuery.cache 中。每个元素的数据都由 jQuery 直接放在 DOM 节点上的序列号交叉引用。

所以这是一个 jQuery 特定的系统。唯一特定于浏览器的问题是 jQuery 如何绑定(bind)通用处理程序,而 jQuery 也负责解除绑定(bind)。


来自文档:

"To avoid memory leaks, jQuery removes other constructs such as data and event handlers from the child elements before removing the elements themselves."

关于javascript - jQuery empty() 、 click() 和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11726864/

相关文章:

javascript - window.opener 在弹出窗口中重定向后无用 (JavaScript)

jquery - 使用 jQuery 获取自定义属性

javascript - 从 2D Canvas 的选定部分获取 RGB 颜色代码

javascript - .each 循环中的 jQuery .dialog - 每次迭代都会写入新的对话框内容 div - 如何在每次循环中销毁旧的 div?

php - 即使被禁用,数据表排序 asc 图标仍然出现在第一列

html - 获取一个 <canvas> 元素来填充父 div 中的剩余高度?

css - 图像适合窗口

javascript - 为什么我的 JavaScript 不能在 JSFiddle 中运行?

javascript - 使用 UI-Router 避免在 URL 更改时重新加载页面

javascript - parseInt 改变整数