2010-07-06 67 views
14

我有一个使用动态标签的UI,因此可以将内容加载到标签中,然后可以关闭标签并从页面中删除内容。当我删除元素时,是否需要在jQuery中分离事件

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

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

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

+0

我很好奇你为什么不止一次地将相同的事件附加到一个元素。如果你正在进行大量的绑定/解除绑定,那么可能会有更好的方法。 – user113716 2010-07-06 12:58:58

回答

16

如果你(如果你想在以后的时间重新插入这个元素,这是有用)使用jQuery方法.remove().empty(),他们将清理所有使用jQuery分配的事件(和其他数据)。

从用于删除的文档():

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

和空():

为了避免内存泄漏,jQuery的去除其它构建体如来自子元素数据和事件处理程序除去元素本身之前。

如果您使用本机API的删除方法,则所有数据都将停留。所以最好使用jQuery方法。

3

如果你删除一个元素.remove()所有与该元素相关的绑定事件和jQuery数据将被删除。

除了.detach(),这将删除从DOM元素,但保留所有相关数据,并在内存中的活动

相关问题