`

JQuery关于DOM的释放

阅读更多
引用

JQuery关于DOM的释放

JQuery的empty()和 remove()
empty()是调用remove()来进行清空的,
而remove()则是先清理所有选中的对象及其子对象的所有事件和属性,再使用removeChild()删除自己.
经在IE6下测试,removeChild()有两个很重要特性:
第一,他不会删除DOM中的事件
第二,他不会真正删除(释放)指定对象中的子对象
而JQuery就是犯了第二条, 结果所有子对象都成为了不在DOM树中的“游离子DOM树”,这时JS是无能为力了(因为已经没有引用地址,例如变量名),即使使用CollectGarbage();都不能释放内存
解决方案(伪代码):
jQuery( “*”, obj).add([obj]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
obj.innerHTML = “”;
PS.:
上面代码意思是:使用JQuery把指定对象及所有子对象的事件和属性去除,这是由于使用innerHTML和removeChild()一样也不能清除对象的事件,然后使用innerHTML=”” 来清空内容,使用innerHTML=”能把所有子对象都完全清空.
分享到:
评论

相关推荐

    iframe如何动态创建及释放其所占内存

    分析发现是iframe没有释放造成的,于是对所有已关闭的iframe所占用的内存进行释放,虽然不能完全释放,但是iframe内存占用量不会一直增长,整个应用内存使用量控制在150M左右。 /** * 动态创建iframe * @param dom...

    使用jQuery简化Ajax开发

    一些简单的代码简化使Ajax变得简单为HTML添加动画DOM脚本和事件处理释放jQuery选择器的强大能量使用插件扩展jQuery结束语参考资料jQuery是一个JavaScript库,它有助于简化[removed]trade_mark:以及...

    JQuery Dialog的内存泄露问题解决方法

    对于页面来说,JQuery中的Dialog从效果上来说还可以,而且使用简单,只要短短几行绑定的代码就可以实现弹出效果。...但是对于交互性强的,需要动态加载与释放DOM的页面来说,它就是一个悲剧的东西!

    jQuery实现通过方向键控制div块上下左右移动的方法【测试可用】

    这里我们采用JQuery的animate方法来实现动画效果,利用keydown监听方向键按下的事件(这里采用keydown而不是keyup,是为了能够在方向键被一直按着时,元素一直移动,keydown是监听按下事件,keyup是监听按键释放事件...

    service.ontouchclick.jquery:一个 jQuery touchclick 插件

    service.ontouchclick.jquery 是一个轻量级(小于 1 kB 缩小)jQuery 插件,允许开发人员将回调函数附加到 DOM 元素; 当用户触摸或单击元素时调用回调。 在用户必须单击元素的设备上,当“单击”事件发生时,会...

    jQuery 判断元素上是否绑定了事件

    jQuery会在window.unload的时候卸载所有绑定过的事件,释放内存的。 OK,言归正传。判断元素上是否绑定过事件用如下语句 代码如下: jQuery.data(elem,”events”)[type] //老版本也能用 $(elem).data(“events”)...

    单页应用前端MVC框架Magix.zip

    包括:采取Dom节点即用即释放的方法,保障永不持有Dom节点采用全新的事件代理方案,高效解耦Dom节点与事件响应体Magix 基于“约定大于配置”设计原则,可以快速构建可扩展的大型单页面Web应用,同时也特别注意 ...

    深入学习jQuery中的data()

    这时候按理说应该把这个js变量清空,释放内存。大家都知道,如果一个js对象不存在任何外在引用的话,解释器会自动将其在内存中删除,这也是javascript相对于c++等手动管理内存的程序的优点。  3、但是这时候问题...

    jQuery移除元素自动解绑事件实现思路及代码

    所以,在现代浏览器,如果你将一个元素从DOM树种进行移除的时候,浏览器会自动帮你绑定的事件进行解绑以释放其占用的内存。也许你猜到了,较老版本的浏览器则不会主动去做这件事,所以,当你的应用在较老版本的...

    cDesk-v2.8布局框架

    2、无缝兼容jQuery动画,桌面切换将看到漂亮的动画效果 3、增加cDesk.AppButton.openApp([desk],[appbtn],[],[])方法 4、增加cDesk.DeskBox.getAppNums([index])方法 5、增加cDesk.DeskBox.setAppNums([index],[nums...

    diabetic.js:在你的代码中添加糖..

    这个 javascript 库添加了甜蜜的... Diabetic 不操作 DOM,不进行任何 AJAX 调用,也不需要 jQuery! 快速开始 凉亭安装——拯救糖尿病患者 特征 下面列出了可用的功能 咖喱 管道 保持和释放 文档 查看中的示例和用法。

Global site tag (gtag.js) - Google Analytics