javascript - obtiene - saber si un elemento tiene un evento jquery
¿Cómo clonar o volver a enviar los eventos DOM? (1)
Estoy buscando una manera simple y abstracta de clonar o volver a enviar eventos DOM solamente. No estoy interesado en clonar nodos DOM.
He experimentado un poco, leí la especificación de eventos DOM y no encontré una respuesta clara.
Idealmente, estoy buscando algo tan directo como:
handler = function(e){
document.getElementById("decoy").dispatchEvent(e)
}
document.getElementById("source").addEventListener("click", handler)
Este ejemplo de código, por supuesto, no funciona. Hay una excepción DOM que indica que el evento se está enviando actualmente, obviamente.
Me gustaría evitar crear eventos nuevos manualmente con document.createEvent()
, inicializarlos y enviarlos.
¿Hay una solución simple para este caso de uso?
Lo sé, la pregunta es antigua, y el OP quería evitar la creación / inicialización del enfoque, pero hay una manera relativamente directa de duplicar eventos:
new_event = new MouseEvent(old_event.type, old_event)
Si desea algo más que eventos de mouse, puede hacer algo como esto:
new_event = new old_event.constructor(old_event.type, old_event)
Y en el contexto original:
handler = function(e) {
new_e = new e.constructor(e.type, e);
document.getElementById("decoy").dispatchEvent(new_e);
}
document.getElementById("source").addEventListener("click", handler);
(Para usuarios de jQuery: es posible que necesite usar e.originalEvent.constructor
lugar de e.constructor
)