Devo essere in grado di rimuovere eventi collegati a un elemento ea tutti i suoi figli anche quando non so quali sono questi eventi. Tutti gli eventi sono collegati usando jquery.E 'possibile rimuovere tutti gli eventi collegati a un elemento e ai relativi figli
risposta
Per jQuery 1.8 e successive, utilizzare
$(element).find("*").addBack().off();
addBack()
aggiunge l'elenco originale di elementi $(element)
indietro alla raccolta interna di elementi detenuta dall'oggetto jQuery (quelli restituiti da find("*")
). off()
rimuove tutti i gestori di eventi collegati, inclusi quelli che utilizzano la delega.
se si desidera solo i bambini e non tutti i discendenti, usano
$(element).children().addBack().off();
Vedere la documentazione:
Per jQuery 1.7 e versioni precedenti, utilizzare andSelf()
anziché addBack()
. Per jQuery 1.6 e versioni precedenti, utilizzare unbind()
e die()
anziché off()
. Ad esempio:
$(element).children().andSelf().unbind().die();
Utilizzare il metodo .unbind() sull'elemento.
eSelf() la funzione è obsoleta.
Usa add() funzione:
$(element).add("*").off();
Penso che si possa solo sostituire 'addSelf()' per 'addBack()' – Marc
eSelf() è deprecato, $ (elemento) .children(). AddBack() è equivalente a $ (elemento) .add ("*") –
Non sono equivalenti. Quest'ultimo (la tua risposta) seleziona ogni elemento nel DOM. Per correggere ciò è necessario dare contesto al selettore "*", ad esempio '$ (elemento) .add (" * ", elemento) .off();' – Jools
Questa non è una risposta, ma vale la pena ricordare.
Avevo utilizzato un plug-in di terze parti senza un metodo di distruzione. Ho trovato questa soluzione ma non ha funzionato all'inizio finché non ho iniziato a scavare più a fondo nella documentazione.
Si noti che se il plug-in crea un listener $(document).on(event, handler)
sull'oggetto, è necessario rimuovere l'azione scrivendo $(document).off(event, 'element, element *')
. La semplice scrittura di $(element).find("*").addBack().off();
non funzionerà se il listener principale è il document
.
- 1. Rimuovere tutti i listener di eventi JavaScript di un elemento e dei relativi figli?
- 2. jQuery ottiene l'elemento successivo e tutti i relativi figli
- 3. Selezione di tutti gli elementi tranne uno e relativi figli/nipoti
- 4. Ottieni tutti gli event handler collegati ad un elemento
- 5. jquery off/unbind ecc. Ricollega in modo ricorsivo tutti gli eventi al selettore e ai figli correnti?
- 6. Vedere tutti gli eventi dom per un elemento
- 7. Come limitare gli indici delle tabulazioni solo a un overlay e ai relativi elementi
- 8. È possibile rimuovere tutti i gestori di eventi di un determinato elemento in javascript?
- 9. Come rimuovere tutti gli elementi figli da un nodo e quindi applicarli di nuovo con colori e dimensioni diversi?
- 10. Perché utilizzare gli URL relativi ai protocolli?
- 11. Come rimuovere tutti gli ascoltatori in un elemento?
- 12. Rimuovi elemento, ma conserva tutti i dati e gli eventi associati
- 13. I listener di eventi javascript devono essere rimossi prima di rimuovere l'elemento a cui sono collegati?
- 14. OpenSocial e relativi utilizzi
- 15. Come rimuovere tutti gli stili ereditati e calcolati da un elemento?
- 16. CSS seleziona tutti gli elementi figli tranne i primi due e gli ultimi due
- 17. Cattura tutti gli eventi (javascript)
- 18. Posso trovare gli eventi associati a un elemento con jQuery?
- 19. Firebug: come visualizzare gli eventi collegati di un oggetto?
- 20. Come attivare eventi su tutti gli elementi
- 21. Come accedere ai figli di un ItemsControl?
- 22. Come verificare se eventuali listener/gestori di eventi JavaScript sono collegati a un elemento/documento?
- 23. Come selezionare tutti i figli di un elemento con javascript e modificare la proprietà CSS?
- 24. rimuovere tutti un tipo di file da una directory e dei suoi figli
- 25. Rendering UIView con i relativi figli
- 26. È possibile intercettare/ignorare tutti gli eventi click nella pagina?
- 27. Come applicare uno stile a tutti i figli di un elemento
- 28. come svincolare tutti gli eventi utilizzando jQuery
- 29. Non è possibile ricevere eventi relativi alla rete
- 30. Rimuovere tutti gli attributi di un elemento in base a una lista bianca
grazie, sarà questo eventi di delegate unbind(), o ho bisogno di separarli con undelegate() – SystemicPlural
@SystemicPlural: no, non separerà tali eventi. Puoi usare 'undelegate()' o 'die()' semplicemente concatenandolo alla fine sopra. –