2009-03-13 6 views
4

Ich frage mich, ob der folgende jQuery-Code jedes Speicherleck verursacht:verursacht dieses jQuery-Code-Snippet Speicherlecks?

$(function() {     
    var parent=$('table#mytable tbody').get(0); 
    $('tr:last', parent).click(function(){...}); 
}); 

Für mein Verständnis, $('tr:last', parent) ist die letzte Zeile, die das DOM-Objekt ist, aber in der anonymen Funktion, die Schließung hat dieses DOM-Objekt in Bereich, so gibt es einen kreisförmigen Verweis zwischen DOM und Js-Objekten.

Aber wenn es wirklich undicht ist, dann kann ich sehen, es gibt viele solche Art von Code in dem populären Buch "jQuery in Action" von Manning veröffentlicht. Es ist schädlich "Best Practice" in jQuery-Codierung?

Aber ich weiß nicht, ob mein Verständnis richtig ist. Ich hoffe Ihre Kommentare und Korrekturen. Vielen Dank!

Antwort

2

ist anfällig Leck Dieser Code wird Speicherleck im Internet Explorer 6 und Internet Explorer 7 nicht in anderen Browser führen Sie bitte diese aritcles von Douglas Crockford und IBM Devloper Site

+0

hat Firefox solch ein Leck? – jscoot

+0

kein Firefox hat keine solche Leck nur das hat dies. –

+0

Die Frage lautete zu jQuery und zumindest ab der jQuery-Version, die im Januar 2009 veröffentlicht wurde, wird dieser Code NICHT auslaufen. Diese Antwort ist falsch. Siehe meine korrekte Antwort unten. – umassthrower

0

Die zuvor eingereichten Antworten (vor 3 Jahren, seufz) sind falsch. Während jQuery 1,0-1,2 würde hier auslaufen, Blick auf die Version von jQuery aus, wenn diese Frage http://download.oldapps.com/jquery/jquery-1.3.js die folgende Zeile gefragt wurde, wurde in der Funktion enthalten, die alle Event-Listener fügt hinzu:

 // Nullify elem to prevent memory leaks in IE 
    elem = null; 

die die genaue Leak Prevention Vorschlag ist, aus der verknüpften Dokumentation.