Lui*_*spo 3 html javascript jquery dom javascript-events
我正在通过DOM元素注册一个点击监听器jQuery.on()
.如果稍后将该元素从DOM中删除 - 可能是间接的,例如通过替换某些父级的内容$(parent).html(...)
,我是否仍然需要通过删除我的处理程序jQuery.off()
?
即使该元素不再触发任何事件,我担心潜在的内存泄漏.一旦元素从DOM中删除,jQuery或浏览器是否会处理并丢弃所有已注册的处理程序?
即使该元素不再触发任何事件,我担心潜在的内存泄漏.
这是一个非常好的关注.要回答您的问题,请查看$.fn.html
实施情况.从那里你将学习html
将尝试清理存储的事件数据:
// Remove element nodes and prevent memory leaks
if (elem.nodeType === 1) {
jQuery.cleanData(getAll(elem, false));
elem.innerHTML = value;
}
Run Code Online (Sandbox Code Playgroud)
因此,在这种情况下,.off()
不需要手动调用.然而..
您需要记住,您永远不应该尝试使用本机方法removeChild
或设置删除元素innerHTML
,因为在这种情况下肯定会有内存泄漏(如果存储了一些数据,事件由jQuery注册,等等).在这种情况下,实际使用.off
方法取消注册事件处理程序更可靠.或者更好地使用事件传播,而不是html('')
使用$.fn.remove
.
归档时间: |
|
查看次数: |
874 次 |
最近记录: |