Czytałem sporo o tym, jak wycieki pamięci są tworzone w różnych wersjach IE. Kilka świetnych informacji można znaleźć tutaj:Na jquery, zamykania i ewentualnych wycieków pamięci
http://msdn.microsoft.com/en-us/library/bb250448%28VS.85%29.aspx
http://laurens.vd.oever.nl/weblog/items2005/closures/
Korzystanie zamknięć z jQuery jest bardzo częstą praktyką. Nie mogę znaleźć żadnych artykułów mówiących o modelu zdarzeń JQuery'ego (gdzie zamknięcia są intensywnie używane) w odniesieniu do IE i wycieków pamięci W drugim artykule zamieszczonym powyżej jest strategia, aby uniknąć wycieków pamięci podczas korzystania z zamknięć.
Czy JQuery stosuje już strategię podobną do opisanej w artykule w odniesieniu do pomocy w usuwaniu potencjalnych wycieków podczas zamykania? Czy jest to coś, o czym muszę wiedzieć i kodować?
Przykładowo
Tworzy wyciek pamięci IE6/7:
function foo(value) { var bar = document.getElementById("selector"); bar.attachEvent("onclick", // closure function() { alert(value); // reference to 'value' from outer function scope } ); }
sposób Kolejna wersja JQuery z powyższego przykładu spowodować wyciek pamięci IE6/7?
function foo(value) { $('#selector').click( // closure function() { alert(value); // reference to 'value' from outer function scope } ); }
Nie ma nic w pytaniu o wywołanie metody .remove(). –
Dobrze znany problem wycieku z IE pojawia się po usunięciu obiektu DOM, który ma procedury obsługi zdarzeń, które mogą być zamknięciem, które zawiera odniesienie do tego samego obiektu DOM. Rozwiązaniem jest usunięcie wszystkich procedur obsługi zdarzeń z obiektu DOM przed usunięciem z drzewa DOM. Metoda jQuery .remove() robi dokładnie to. – Javier