Necesito poder eliminar los eventos adjuntos a un elemento y todos sus elementos secundarios incluso cuando no sé cuáles son estos eventos. Todos los eventos se adjuntan usando jquery.Es posible eliminar todos los eventos asociados a un elemento y sus elementos secundarios
Respuesta
Para jQuery 1.8 y después, utilizar
$(element).find("*").addBack().off();
addBack()
añade la lista original de elementos de $(element)
de nuevo a la colección interna de los elementos en poder del objeto jQuery (los devueltos por find("*")
). off()
elimina todos los controladores de eventos adjuntos, incluidos los que usan delegación.
si lo que desea los niños y no todos los descendientes, utilizan
$(element).children().addBack().off();
Consulte la documentación:
Para jQuery 1.7 y versiones inferiores, utilice andSelf()
en lugar de addBack()
. Para jQuery 1.6 y versiones inferiores, use unbind()
y die()
en lugar de off()
. Por ejemplo:
$(element).children().andSelf().unbind().die();
Utilice el método .unbind() en el elemento.
y la función Sí() está obsoleta.
Uso add() Función:
$(element).add("*").off();
Creo que solo se puede reemplazar 'addSelf()' por 'addBack()' – Marc
ySelf() está en desuso, $ (elemento) .children(). AddBack() es equivalente a $ (elemento) .add ("*") –
No son equivalentes. Este último (su respuesta) selecciona cada elemento en el DOM. Para corregir esto, debe dar contexto al selector "*", es decir, '$ (elemento) .add (" * ", elemento) .off();' – Jools
Ésta no es una respuesta, pero vale la pena mencionar.
He usado un complemento de terceros sin un método de destrucción. Encontré esta solución pero no funcionó al principio hasta que comencé a profundizar en la documentación.
Tenga en cuenta que si el complemento está creando un oyente $(document).on(event, handler)
en su objeto, debe eliminar la acción escribiendo $(document).off(event, 'element, element *')
. Simplemente escribiendo $(element).find("*").addBack().off();
no funcionará si el oyente principal es el document
.
- 1. ¿Quitar todos los detectores de eventos JavaScript de un elemento y sus elementos secundarios?
- 2. jQuery obtener el siguiente elemento y todos sus elementos secundarios
- 3. Inhabilitación recursiva de todos los elementos secundarios de un elemento
- 4. ¿Es posible eliminar todos los controladores de eventos de un elemento determinado en javascript?
- 5. ¿Cómo elimino todos los elementos secundarios usando linq a sql?
- 6. ¿Cómo puedo desactivar todos los eventos táctiles en todos los elementos secundarios de un ViewGroup?
- 7. Eliminar una clase para todos los elementos secundarios
- 8. ¿Cómo eliminar solo el elemento primario y no sus elementos secundarios en JavaScript?
- 9. Cómo desencadenar eventos en todos los elementos
- 10. jQuery: seleccione todo excepto un solo elemento y sus elementos secundarios.
- 11. Elemento XSD con atributos y elementos secundarios
- 12. ¿Eliminar todos los nodos secundarios de un padre?
- 13. Retire todos los elementos secundarios de un StackPanel
- 14. ¿Cómo puedo eliminar todos los elementos secundarios del elemento del cuerpo con DOMDocument?
- 15. ¿Eliminar elementos secundarios dado un índice?
- 16. Clonar un div y cambiar los ID de él y todos sus elementos secundarios para que sea único
- 17. Cómo deshabilitar los eventos de mouse desencadenados por elementos secundarios?
- 18. Determinar todos los elementos secundarios ancho
- 19. ¿Cómo puedo averiguar qué eventos están asociados a elementos HTML?
- 20. ScrollViewer y manejo de eventos de manipulación en elementos secundarios
- 21. ¿Cómo busco solo los elementos secundarios de un XDocument, en lugar de todos sus descendientes?
- 22. Elemento SimpleXMLElement, xpath y elementos secundarios
- 23. ¿Cómo se escucha Binding.SourceUpdated en todos los elementos secundarios de un elemento raíz?
- 24. ¿Cómo evitar que los elementos secundarios interfieran con los eventos de dragover y caída de HTML5?
- 25. Eliminar todos los elementos después de cierto elemento
- 26. ¿Debo eliminar los detectores de eventos antes de eliminar los elementos?
- 27. ¿Cómo puedo obtener todos los elementos secundarios de los elementos con selectores CSS que usan selenio?
- 28. cómo obtener los elementos secundarios de un elemento WPF
- 29. Eliminando todos los elementos secundarios de la cuadrícula en WPF
- 30. Eliminar todos los elementos dentro de linearlayout
gracias, esto desenlazará los eventos de delegado(), o necesito desvincularlos con undelegate() – SystemicPlural
@SystemicPlural: no, no desvinculará esos eventos. Puede usar 'undelegate()' o 'die()' simplemente encadenándolo en el extremo superior. –