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

时间:2011-09-25 23:00:08

标签: jquery events memory-leaks unbind

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

但是如果我们用.html()“删除”元素会怎样?

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

3 个答案:

答案 0 :(得分:16)

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

的操作,则不会复制事件

答案 1 :(得分:13)

是的,即使您使用html(),它们也会被删除。 jQuery source code证实了这一点。

答案 2 :(得分:1)

稍微扩展一下:

因此,如果您想要保留听众,请使用.detach()