使用.html()删除元素时,是否会自动删除jQuery中的事件侦听器?

在jQuery中,如果我们使用.remove()来删除某些元素,那么将删除与元素关联的所有绑定事件和jQuery数据。

但是如果我们用.html() “删除”元素会发生什么?

我们是否需要在更改任何html之前取消绑定所有元素以避免内存泄漏?

是的,他们将被删除。 jQuery将清理与删除的元素相关的事件等。 如果您执行类似$(elm1).html($ elm2.html())的操作,则不会复制事件

是的,即使你使用html() ,它们也会被删除。 jQuery 源代码证实了这一点。

只是扩大一点:

  • .remove() .empty() .html() .empty()等 – 都删除了侦听器
  • .detach() 不会删除侦听器
  • .clone()具有参数,可让您决定是否复制数据/侦听器

因此,如果要保留侦听器,请使用.detach()