@H_301_1@我有一个页面使用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_502_17@
解决方法
嘿,我知道这是一个老的答案,但我相信接受的答案是误导。
虽然这是正确的说,你将需要解压缩原始JS上的事件,以避免内存泄漏在旧浏览器(ehem IE),调用remove()或empty()将已经为你做。
所以你当前调用empty()应该足够了,它不需要在前面加上unbind()
从jQuery文档(http://api.jquery.com/empty/)
@H_502_17@ @H_502_17@ 原文链接:https://www.f2er.com/jquery/184762.htmlTo avoid memory leaks,jQuery removes other constructs such as data and event handlers from the child elements before removing the elements themselves.