2016-05-30 60 views
0

如果我们附上委派事件与jquery。对()之类去除与jquery卸下摆臂()DOM元素

$(".container").on("click", "#testDiv", function (event){ 
    console.log(event); 
}); 

和后者在脚本如果删除与jquery卸下摆臂的#testDiv元件( )为,

$("#testDiv").remove(); 

然后将它创建任何内存泄漏或不...

回答

0

好吧,既然你正在使用连接到.container委派事件,您的事件监听器将会删除而不是

documentation说:

事件代表团允许我们附加一个单一的事件侦听器,到 父元素,将火了 选择匹配所有后代,无论是现在存在或添加这些后代在未来的 。

这意味着,只要点击事件被触发内部.container,总是会执行一个查询,以检查是否点击的元素是#testDiv

这不能被定义内存泄漏,因为它究竟是如何应该工作事件代表团。阅读this post其中解释了事件委托与直接绑定之间的性能差异。

无论如何,如果你不需要那么听众了,您可以:

  • 通话.off()功能删除
  • 或只是不,如果你使用事件代表团元素之前手动删除监听器真的不需要,但直接绑定
+0

谢谢@pumpkinzzz,只是多一个查询,在我的情况下,我有类似的百年的事件,他们各自的元素可以删除或基于用户交互动态添加。所以有什么更好的方式来处理它,我应该删除事件,当元素被删除,并添加事件回来时,它再次被添加... –

+0

@atulbajpai nope,如果你有一百个事件只是继续使用委托事件,它完全没问题。看到我更新的答案 – pumpkinzzz