我删除元素时是否需要在jQuery中分离事件

时间:2010-07-06 12:45:14

标签: dom javascript-events jquery dynamic-html

我有一个使用动态标签的用户界面,因此可以将内容加载到标签中,然后关闭标签页并从页面中删除内容。

当我将内容加载到选项卡中时,我使用jQuery将大量事件附加到元素。

当我从页面中删除这些元素时会发生什么? jQuery需要知道吗?

另外,如果我多次附加一个事件,这有关系吗?例如,在我的标签加载中,我可能使用类$('.submitButton').click(...)之类的类选择器附加事件。但是我可能已经打开了其他选项卡,这些选项卡已经附加了submitButton事件。在这种情况下,我将重新附加相同的事件。这有什么问题吗?

2 个答案:

答案 0 :(得分:16)

如果使用jQuery方法.remove().empty(),它们将清除使用jQuery分配的所有事件(和其他数据)。

来自remove()的文档:

  

除了元素本身之外,还删除了与元素关联的所有绑定事件和jQuery数据。

和空():

  

为了避免内存泄漏,jQuery会在删除元素本身之前从子元素中删除其他构造(如数据和事件处理程序)。

如果您使用本机API删除方法,那么所有数据都会消失。所以最好使用jQuery方法。

答案 1 :(得分:3)

如果删除带有.remove()所有绑定事件的元素,则删除与该元素关联的jQuery数据。

除了.detach()之外,它将从DOM中删除元素,但将所有关联的数据和事件保存在内存中(如果您希望以后重新插入该元素,这很有用)