zoukankan      html  css  js  c++  java
  • 關於jQuery的empty()方法和IE內存回收的一些體會

    jQuery 的empty()方法在可以頁面移除元素,但是並不能釋放這些元素的子元素佔用的內存,而這些元素的子元素將變成“遊離狀態”,理解了樹的概念就很好理解這個。

    現在需要做的:

    第一步:

    就是將這些子元素放進<div>標籤中,再將<div>的HTML賦值為空:

    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 = '';
                    d.outerHTML = '';
                }
            }
        }();

    第二步:

    將這些元素綁定的事件釋放

     (function($) {
            $.fn.Disposable = function(cln) {
                return this.each(function() {
                    var el = this;
                    if (!el.dispose) {
                        el.dispose = cleanup; // will be called by
                            // Microsoft for cleanup
                        $(window).bind("unload", cleanup);
                    }
                    function cleanup() {
                        if (!el)
                        return;
                        $(el).unbind();
                        $(window).unbind("unload", cleanup);
                        el.dispose = null;
                        el = null;
                    };
                });
            };
        })(jQuery);

    測試結果有效,可以通過 IE Sieve 工具進行查看。

    以上jQuery代碼來自網絡,參考地址:

    http://zhanjianhua.iteye.com/blog/230695#comments

    http://www.codeproject.com/Articles/34348/jQuery-Memory-Leak-in-UpdatePanel

  • 相关阅读:
    vue-router在两个以上子路由的情况下,跳转出错
    全局window下添加可变量
    nuxtjs 环境中添加全局axios
    nuxt.js 初始化 npm run dev 报错
    replace的回调函数。
    JS面向对象的类 实例化与继承
    DOM事件: DOM事件级别、DOM事件流、DOM事件模型、DOM事件捕获过程、自定义事件
    sync 简单实现 父子组件的双向绑定
    cube-ui 重构饿了吗Webapp的 scroll-nav域名插槽问题
    在element table中导出指定列信息
  • 原文地址:https://www.cnblogs.com/wftrustself/p/3529763.html
Copyright © 2011-2022 走看看