【问题标题】:Are event listeners in jQuery removed automatically when you remove the element using .html()?当您使用 .html() 删除元素时,jQuery 中的事件侦听器是否会自动删除?
【发布时间】:2011-09-25 23:00:08
【问题描述】:

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

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

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

【问题讨论】:

    标签: jquery events memory-leaks unbind


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢阿努拉格,我知道你是第一个,你正在证明你的答案(+1),但 kinghfb 需要更多积分,所以我会将他的答案标记为已接受以激励他,我希望你明白。谢谢!
      • 无论如何,应该有一个 SO 徽章,用于通过源代码链接验证您的答案:)
      【解决方案3】:

      只是为了扩展一点:

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

      【讨论】:

        猜你喜欢
        • 2011-08-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-04
        • 1970-01-01
        • 2022-08-03
        • 2012-02-10
        • 1970-01-01
        相关资源
        最近更新 更多