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

fea*_*net 14 jquery dom javascript-events dynamic-html

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

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

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

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

use*_*716 16

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

从remove()的文档:

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

并为empty():

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

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