论坛首页 Web前端技术论坛

关于jquery内存回收问题请教

浏览 17672 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-11  
jljlpch 写道
jQuery.fn.removeNode = function(){  
            var d;  
            return function(){  
                if(this[0] && this[0].tagName != 'BODY'){  
                    d = d || document.createElement('div');  
                    d.appendChild(this[0]);  
                    d.innerHTML = '';  
                }  
            }  
        }();
先注册removeNode
之后再通过$('div').removeNode();就可以了。
不过没有清除与之相关的事件和expando中加入的data.
还是不完善。
Ext中的也是很有问题。



============================================
是的,我目前的也是清理的不是很干净

XXX.innerHTML=""
大家思路都是一样的


0 请登录后投票
   发表时间:2008-09-11  
remove : function(selector) {// 根据selector除去元素,防内存泄露
if (!selector || jQuery.filter(selector, [this]).r.length) {
// Prevent memory leaks  this是指dom元素
jQuery("*", this).add([this]).each(function() {
jQuery.event.remove(this);
jQuery.removeData(this);
});
if(jQuery.browser.msie) this.parentNode.innerHTML="";//加上这句话应该会好一点。
else if (this.parentNode) this.parentNode.removeChild(this);
}
},
0 请登录后投票
   发表时间:2008-09-11  
XXX.outerHTML="";
更新

继续努力
0 请登录后投票
   发表时间:2009-04-17  
你为什么要不把str声明成jquery对象,加上${}试下
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics