2016-07-29 38 views
0

我正在給DOM添加一個div,並在其上執行一些動畫。一旦動畫結束後,我從DOM再次除去股利,就像這樣:將添加和刪除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變量保存在內存中,將會發生。如果只有一個$div變量,它會是一個真的非常微小的泄漏。如果$div被重複創建並保留(例如,在一個函數中被一個閉包捕獲),那麼這個小小的泄漏就會加起來。很可能,沒關係,但我們需要更多的上下文才能夠肯定地說出來。

爲了避免這種可能性,你可以擺脫完全變量:

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