只是想知道从内存的 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/