2012-12-19 11 views
26

Mam element div z kilkoma elementami wewnątrz niego, podobnie jak przyciski i tak dalej, które mają dołączone programy obsługi zdarzeń. Wiem, że to możliwe, aby przejść:Jquery Usuń wszystkie elementy obsługi zdarzeń wewnątrz elementu

$("#button1").off() 

Aby usunąć obsługi dla przycisku, ale chciałbym zrobić coś takiego, jeżeli to możliwe:

$("#div1").removeChildHandlers(); 

Czy istnieje natywna funkcja w jQuery to zrobić czy musiałbym zapętlić wszystkie elementy i usunąć 1 na 1?

+0

jest może '.find ('przycisk') off()' co szukasz? –

+0

Nie ma nic bardziej konkretnego – Nuvolari

+0

możliwy duplikat [Usuń wszystkie programy obsługi zdarzeń jQuery] (http://stackoverflow.com/questions/12377854/remove-all-jquery-event-handlers) – Antony

Odpowiedz

31

jQuery zrobi zapętlenie dla Ciebie za jedyne bezpośrednie dzieci:

$("#div1").children().off(); 

lub jeśli chcesz wszystkich potomków:

$("#div1").find("*").off(); 
+0

Dzięki temu myślę, że obejmowało prawie wszystkie możliwości, których szukałem. – Nuvolari

+0

Dzięki za to. Zauważyłem, że trudno jest określić, czy moduł obsługi zdarzeń już istnieje bez ręcznego śledzenia go. Wyłączenie wszystkich opiekunów potomków pozwala mi ponownie je zastosować zaraz po. Prawdopodobnie nie jest to dobre dla wydajności, ale szybkie rozwiązanie jest wspaniałe! –

+0

jaka jest główna różnica między '$ (" # div1 "). Children(). Off()' from '$ (" # div1 ") .off()'? –

3

Czy to pomoże:

$("#div1").find('*').off(); 
+0

Zamiast '$ (" # div1 ") .find ('*') 'można użyć selektora CSS' $ ("# div1 *") '. – skobaljic

1

Try z

$("#div1 >* ").off(); 

Or.

$("#div1").find('button').off(); 

jeśli mówisz <button> elementy

Powiązane problemy