2012-12-19 17 views
26

Ho un elemento div con diversi elementi al suo interno come pulsanti e così via che sono associati a gestori di eventi. So che la sua possibile andare:Jquery Rimuovi tutti i gestori di eventi all'interno dell'elemento

$("#button1").off() 

Per rimuovere il gestore per un pulsante, ma mi piacerebbe fare qualcosa di simile, se possibile:

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

C'è una funzione nativa in jQuery per fare questo o dovrei fare un ciclo di tutti gli elementi e rimuovere 1 per 1?

+0

è forse '('bottone') .find off()' quello che stai cercando? –

+0

No qualcosa di meno specifico – Nuvolari

+0

possibile duplicato di [Rimuovi tutti i gestori di eventi jQuery] (http://stackoverflow.com/questions/12377854/remove-all-jquery-event-handlers) – Antony

risposta

31

jQuery farà il loop per voi solo per i figli diretti:

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

o se si desidera che tutti i discendenti:

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

Grazie Penso che abbia coperto quasi tutte le possibilità che stavo cercando. – Nuvolari

+0

Grazie per questo. Ho scoperto che è difficile determinare se un gestore di eventi esiste già senza tracciarlo manualmente. Disattivare tutti i gestori discendenti mi consente di riapplicarli subito dopo. Probabilmente non va bene per le prestazioni, ma una soluzione rapida è fantastica! –

+0

qual è la differenza principale tra '$ (" # div1 "). Children(). Off()' da '$ (" # div1 "). Off()'? –

3

funziona questo aiuto:

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

Invece di '$ (" # div1 ") .find ('*') 'si può usare il selettore CSS' $ ("# div1 *") '. – skobaljic

1

Try con

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

Oppure:.

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

se si sta parlando di <button> elementi

Problemi correlati