2016-07-29 2 views
0

Ich füge ein Div zum DOM hinzu und führe eine Animation darauf aus. Sobald die Animation vorbei ist, bin ich das Entfernen der div aus dem DOM wieder, wie folgt aus:Werden beim Hinzufügen und Entfernen eines DOM-Elements Speicherlecks dynamisch erstellt?

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

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

Wird schaffen dies einen Speicherleck?

+0

Nein, das ist in Ordnung. –

Antwort

2

Es wird nicht, wenn $div eine Variable ist, die den Gültigkeitsbereich verlässt. Es wird, wenn die $div Variable im Speicher gehalten wird. Wenn es nur eine einzige $div Variable gibt, wird es ein wirklich wirklich winziges Leck sein. Wenn $div erstellt und wiederholt gespeichert wird (z. B. in einer Funktion, in der es von einer Schließung erfasst wird), wird dieses winzige Leck summieren. Höchstwahrscheinlich ist es in Ordnung, aber wir brauchen mehr Kontext, um sicher zu sein.

diese Möglichkeit zu vermeiden, können Sie loswerden der Variablen vollständig erhalten:

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