在删除元素之前,我需要解除绑定jquery事件吗?

前端之家收集整理的这篇文章主要介绍了在删除元素之前,我需要解除绑定jquery事件吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个页面使用jquery-ui对话框。每次打开对话框时,使用ajax加载页面内容。然后它使用jquery“on()”绑定一些事件。
当对话框关闭时,它将清空其内容

问题是,我需要解除绑定在“.ajax-content”之前的事件$ .empty()?

编辑:
关注1.任何可能的降级JS性能?如果我以这种方式空()数百个节点。

关心2.将删除元素也从内存中删除事件(或任何执行/评估链的jquery)?

我现在不对他们做任何事情。
如果对话框打开/关闭多次没有页面刷新,会造成任何问题吗?

代码看起来像这样:

<div id="jquery-dialog" class="container">
  <div class="ajax-content">
    some buttons....
  </div>
</div>

------after each ajax load------------
$(".ajax-content").on("click",".button",function(event) {
  //handles the click
});

------on dialog close------------
$("#jquery-dialog").empty();

解决方法

@H_301_20@ 嘿,我知道这是一个老的答案,但我相信接受的答案是误导。

虽然这是正确的说,你将需要解压缩原始JS上的事件,以避免内存泄漏在旧浏览器(ehem IE),调用remove()或empty()将已经为你做。

所以你当前调用empty()应该足够了,它不需要在前面加上unbind()

从jQuery文档(http://api.jquery.com/empty/)

To avoid memory leaks,jQuery removes other constructs such as data and event handlers from the child elements before removing the elements themselves.

原文链接:https://www.f2er.com/jquery/184762.html

猜你在找的jQuery相关文章