2016-07-29 7 views
0

DOMにdivを追加して、アニメーションを実行しています。アニメーションが終了したら、DOMのdivを次のようにもう一度削除します。DOM要素を追加したり削除したりすると、動的にメモリリークが発生しますか?

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

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

これでメモリリークが発生しますか?

+0

いいえ、これは結構です。 –

答えて

2

$divが範囲外になる変数である場合は表示されません。変数$divがメモリ内に保持されている場合に実行されます。ただ1つの$div変数がある場合、それは本当に本当に小さなのリークになります。 $divが繰り返し作成され、保持されている場合(例えば、クロージャによって取り込まれた関数の場合)、その小さなリークが加算されます。おそらく、それは問題ありませんが、確かに言えるようにするためにはもっと多くの文脈が必要です。その可能性を避けるために

、あなたは完全に変数を取り除くことができます:

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