添加和删​​除DOM元素会动态创建内存泄漏吗?

时间:2016-07-29 09:26:11

标签: jquery memory-leaks dom-manipulation

我正在为DOM添加div并在其上执行一些动画。一旦动画结束,我将再次从DOM中删除div,如下所示:

$div = $("<div />", {id:"flashMsg", class: className, html:msg}).prependTo(bazingaApp.app.rightPanel);

$div.fadeIn("slow",function(){
   $(this).delay(5000).slideUp(1000, function () {
       $(this).remove();                    
   });
});

这会造成任何内存泄漏吗?

1 个答案:

答案 0 :(得分:2)

如果$div是一个超出范围的变量,那就不胜算了。如果$div变量保留在内存中,它将会出现。如果只有一个$div变量,那么它将是非常小的泄漏。如果$div被重复创建并保留(例如,在一个闭包捕获的函数中),那么微小的泄漏就会加起来。最有可能,这很好,但我们需要更多的背景才能确定。

为了避免这种可能性,你可以完全摆脱变量:

$("<div />", {
    id:"flashMsg",
    class: className,
    html:msg
})
.prependTo(bazingaApp.app.rightPanel)
.fadeIn("slow",function(){
   $(this).delay(5000).slideUp(1000, function () {
       $(this).remove();                    
   });
});