2011-06-24 77 views
2

简单插件:不jquery插件删除时的DOM元素删除

(function ($) { 
    var MyTest = function(){ 
    this.bigarr = new Array(20000); 
    this.init(); 
    }; 
    $.fn.extend({ 
    mytest: function(options){ 
    return this.each(function() { 
     new MyTest(); 
    }); 
    } 
}); 

$.extend(MyTest.prototype, { 
    init: function(){ 
    console.log(this); 
    } 
}); 
})(jQuery); 

然后我插件附加到DOM元素:

$('#selector').mytest(); 

和删除的元素:

$('#selector').remove(); 

这个插件会发生什么?大阵列是否仍然存在于内存中?或者我必须删除它manualy?

+0

我真的不明白你的问题。 '.remove()'只需删除选定的元素。你仍然可以使用我的插件 – Ibu

+1

。但是当我插入另一个元素的插件时,我创建了新的MyTest实例。它似乎是一个内存泄漏,如果旧实例没有被automaticaly删除。 – Serge

回答

0

在jQuery选择器上调用remove会从DOM树中删除元素,但不会从内存中删除元素。

有关更多讨论,请参阅this answer

伊恩。

0

考虑到您永远不会将MyTest的实例分配给变量,它可以立即进行垃圾回收。无论您是否移除该元素,内存都可以回收。

+0

但MyTest处于关闭状态。我可以随时使用它,直到元素$('selector')被删除。那么,浏览器如何知道我会使用MyTest呢? – Serge