2013-04-07 13 views
8

Jaki jest poprawny sposób na zniszczenie flotowania jQuery w sposób, który oczyści wszystkie procedury obsługi zdarzeń i nie spowoduje wycieku pamięci?Niszczenie jQuery Flot Graph

Wydaje flot jest pozostawiając niektórych zombie (aka jednorodzinne Dom drzewach)

+0

'$ .plot ('# yourFlotDiv', {}, {});' przeczytaj gdzieś. Nie pamiętam dokładnie gdzie. – Ejaz

Odpowiedz

3

jeśli chcesz usunąć obsługi zdarzeń następnie spróbuj jquery off metody.

do czyszczenia wykresu flot. możesz opróżnić div.

$('#yourFlotDiv').empty(); 
+0

Jakie argumenty należy przekazać do jQuery.off()? – thecountofzero

+0

@thecountofzero $ ("# yourFlotDiv"). Off ("yourEventHandlerTORemove"); aby uzyskać więcej informacji, zobacz ten http://api.jquery.com/off/ –

+0

Mówię o upewnieniu się, że flot wyczyści wszystkie funkcje obsługi zdarzeń i usunie wszystkie utworzone elementy DOM. – thecountofzero

5

Jeśli czytasz docs API, istnieje metoda zamykania, który czyści się za ciebie

shutdown() 

Cleans up any event handlers Flot has currently registered. This 
is used internally. 

np.

var plot = $.plot($("#yourDiv"), options) 

plot.shutdown() 
+0

To jest poprawne i działa. – MirroredFate

4

Dla ludzi, którzy przybyli tu w przyszłości, obecnie istnieje destroy funkcja, która wywołuje zamknięcie i usunięcie elementu canvas. To nieudokumentowane w API z jakiegoś powodu, ale jest dostępny w kodzie:

var flot = $("#FlotDiv").data('plot') 
if (flot) // If it's destroyed, then data('plot') will be undefined 
    flot.destroy(); 
0

celu usunięcia flot Graph

var placeholder = $("#FlotDiv"); 
placeholder.unbind(); //Remove a previously-attached event handler from the elements. 
placeholder.empty(); 

Również w przypadku, gdy chcesz, aby rozwiązać konkretne zdarzenie to jest do zrobienia :

$("#foo").unbind("click"); 

Więcej informacji można uzyskać pod numerem this.