我有一个使用jquery-ui-dialog的页面.每次打开对话框时,都会使用ajax加载页面内容.然后它使用jquery"on()"绑定一些事件.当对话框关闭时,它将清空其内容.
问题是,我是否需要在$ .empty()之前取消绑定".ajax-content"上的事件?
编辑: 关注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();
Run Code Online (Sandbox Code Playgroud)
小智 49
嘿,我知道这是一个老问题,但我相信接受的答案是误导性的.
虽然说你需要在原始JS上取消绑定事件以避免旧浏览器上的内存泄漏(ehem IE)是正确的,但是调用remove()或empty()已经为你做了.
所以你当前对empty()的调用应该足够了,它不需要以unbind()开头.
来自jQuery docs(http://api.jquery.com/empty/)
为了避免内存泄漏,jQuery在删除元素本身之前从子元素中删除了其他构造,如数据和事件处理程序.
归档时间: |
|
查看次数: |
14638 次 |
最近记录: |