2012-10-22 17 views
6

Problemy z odłączeniem globalnej procedury obsługi zdarzeń ajaxSuccess.Odłączanie zdarzenia jQuery ajaxSuccess

Za każdym razem, gdy uruchomię poniższy kod, a następnie przetestuję funkcję ajax, hak metody zostanie wywołany raz za każdym razem, gdy uruchomiłem kod.

var hook = function() { console.log('hey'); }; 
$(document).unbind('ajaxSuccess', hook); // not working 
$(document).bind('ajaxSuccess', hook); 

Ja również próbowałem tylko przy użyciu

$(document).ajaxSuccess(hook); 

ale powyżej nie zastępuje istniejącego odniesienia do haka i ma takie samo zachowanie jak wyżej.

Jedna rzecz, która może być istotna, to to, że używam bardzo starej wersji jQuery (1.3.2).

Jestem pewien, że istnieje oczywiście rozwiązanie, którego tu brakuje, ale mózg po prostu nie działa dzisiaj. Każda pomoc zostanie bardzo doceniona!

Z góry dziękuję!

Odpowiedz

5

Drugi argument .unbind() powinny być odniesienie do funkcji, która jest aktualnie związany. Jeśli zmienisz zmienną, aby wskazywała inną funkcję, nie zadziała.

Tak więc, jeśli wpierw nie zwiąże ajaxSuccess do funkcji o nazwie hook:

var hook = function() { console.log("a"); }; 
$(document).bind("ajaxSuccess", hook); 

a następnie zmienić hook i spróbować go rozwiązać:

hook = function() { console.log("b"); }; 
$(document).unbind("ajaxSuccess", hook); 
$(document).bind("ajaxSuccess", hook); 

to zawiedzie ponieważ hook nie zawiera odniesienie do pierwotnej funkcji. Zamiast rozwiązać przed zmianą wartości hook:

$(document).unbind("ajaxSuccess", hook); 
hook = function() { console.log("b"); }; 
$(document).bind("ajaxSuccess", hook); 

Lub, jeśli nie jest to możliwe, na przykład, ponieważ oryginalny hook nie jest już w zasięgu, można pominąć drugi parametr do usunięcia wszystkie oprawionych teleskopowe :

$(document).unbind("ajaxSuccess"); 

oczywiście, jeśli masz inny obsługi związany document.ajaxSuccess, to będzie również niezwiązany.

+0

Dziękuję za wyjaśnienie mi tego, po przeczytaniu odpowiedzi bardzo łatwo było rozwiązać problem. Dzięki! –

Powiązane problemy