删除页面元素,该元素绑定的事件是否会一起销毁

我们项目里,组件元素事件是通过jquery绑定的,现在有个问题就是如果不先用jquery取消绑定,那么组件无法成功销毁,最终内存占用特别高。如果我用js原生的方法绑定事件,当组件销毁时,页面元素也销毁了,其绑定的事件是否也会被销毁?

阅读 8.7k
4 个回答

高程上说有一部分浏览器(尤其是ie)会将元素和事件处理程序的引用保存在内存中,如果知道某个元素要被移除可以手工移除事件处理程序

var e = document.createEvent('HTMLEvents');
e.initEvent('click',false,false);
d0.dispatchEvent(e);

明显删掉d0元素还触发了点击事件

$(this).find('*').off()

如果你说的销毁只是从Dom tree中移除的话,只要js中还存在对元素的引用,元素和事件都还是存在内存中的。
直接实例化组件new A();或者var a = new A(); a = null;都可以使组件A不被GC掉

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题