如果我们使用jquery .on()附加委托事件,如
$(".container").on("click", "#testDiv", function (event){
console.log(event);
});
如果我用jquery .remove()删除#testDiv元素,那么脚本中的和后者,
$("#testDiv").remove();
那么它是否会造成任何内存泄漏......
答案 0 :(得分:0)
好吧,既然您使用了附加到.container
的委托事件,您的事件监听器将 NOT 被删除。
事件委托允许我们将单个事件监听器附加到 父元素,将为匹配a的所有后代触发 选择器,无论这些后代现在存在还是被添加到 将来
这意味着只要在.container
内触发 click 事件,就会始终执行查询以检查点击的元素是否为#testDiv
这不能定义内存泄漏,因为它确实应该如何处理事件委托。阅读this post,其中解释了事件委派和直接绑定之间的性能差异。
无论如何,如果你不再需要那个听众,你可以: