gpt4 book ai didi

javascript - 我应该在删除 DOM 元素后调用 jQuery.off 吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:02:14 27 4
gpt4 key购买 nike

我正在通过 jQuery.on() 在 DOM 元素上注册点击监听器。如果稍后从 DOM 中删除该元素——可能是间接的,例如通过 $(parent).html(...) 替换一些父级的内容,我是否还需要费心通过 jQuery.off() 删除我的处理程序?

即使元素不再触发任何事件,我也担心潜在的内存泄漏。一旦元素从 DOM 中移除,jQuery 或浏览器是否会处理并丢弃所有已注册的处理程序?

最佳答案

Even if the element will no longer trigger any event, I am worried about potential memory leaks.

这是一个很好的关注点。要回答您的问题,请查看 $.fn.html implementation .从那里您将了解到 html 将尝试清理存储的事件数据:

// Remove element nodes and prevent memory leaks
if (elem.nodeType === 1) {
jQuery.cleanData(getAll(elem, false));
elem.innerHTML = value;
}

所以在这种情况下手动调用 .off() 是没有必要的。然而..

您需要记住,永远不要尝试使用 removeChild 或设置 innerHTML 等 native 方法删除元素,因为在这种情况下会出现内存泄漏确定(如果存储了一些数据,事件由 jQuery 等注册)。在这种情况下,使用 .off 方法实际注销事件处理程序更为可靠。或者更好地使用事件传播,而不是 html('') 使用 $.fn.remove

关于javascript - 我应该在删除 DOM 元素后调用 jQuery.off 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com