2012-12-19 42 views
26

Ich habe ein div-Element mit mehreren Elementen wie Buttons und so weiter, die Event-Handler an sie angeschlossen haben. Ich weiß, ihr möglich zu gehen:Jquery Entfernen Sie alle Ereignishandler Inside Element

$("#button1").off() 

Wenn die Prozedur für eine Schaltfläche zu entfernen, aber ich möchte so etwas tun, wenn möglich:

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

Gibt es eine native Funktion in JQuery, dies zu tun Oder müsste ich sie alle Elemente loopen und 1 zu 1 entfernen?

+0

sprechen vielleicht '.find ist ('Taste') aus()', was suchen Sie? –

+0

Nein, etwas weniger spezifisch – Nuvolari

+0

möglich Duplikat von [Alle jQuery Event-Handler entfernen] (http://stackoverflow.com/questions/12377854/remove-all-jquery-event-handlers) – Antony

Antwort

31

jQuery wird nur für die direkten Kinder für Sie die Looping tun:

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

oder wenn Sie wollen alle Nachkommen:

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

Danke, ich denke, das deckt so ziemlich alle Möglichkeiten ab, nach denen ich gesucht habe. – Nuvolari

+0

Danke dafür. Ich fand es schwierig zu bestimmen, ob ein Event-Handler bereits existiert, ohne es manuell zu verfolgen. Wenn alle Nachkommenhandler ausgeschaltet sind, kann ich sie direkt danach erneut anwenden. Wahrscheinlich nicht gut für die Leistung, aber eine schnelle Lösung ist großartig zu haben! –

+0

Was ist der Hauptunterschied zwischen '$ (" # div1 "). Children(). Off()' from '$ (" # div1 "). Off()'? –

3

Ist diese Hilfe:

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

Anstelle von $ ("# div1") .find ('*') 'kann man den CSS-Selektor' $ ("# div1 *") 'verwenden. – skobaljic

1

Try mit

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

. Oder:

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

, wenn Sie über <button> Elemente

Verwandte Themen