14

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

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

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

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

4

2 回答 2

16

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

从 remove() 的文档中:

除了元素本身,所有与元素关联的绑定事件和 jQuery 数据都将被删除。

对于空():

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

如果您使用本机 API 删除方法,所有这些数据都会保留。所以最好使用jQuery方法。

于 2010-07-06T12:51:54.437 回答
3

如果您使用.remove()删除一个元素,则所有与该元素关联的绑定事件和 jQuery 数据都将被删除。

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

于 2010-07-06T12:51:44.140 回答