Necesito emitir un evento a todos los childNodes profundos de un elemento. Lo que estoy buscando es la captura de eventos usando eventos personalizados o algo equivalente.
una de las soluciones es hacer un bucle recursivo a través de todos los niños y luego emitir eventos a cada uno, pero es más lento.
¿Hay alguna solución mejor?
No estoy seguro de lo que quiere decir con childNodes profundos , pero querySelectorAll puede seleccionar todos los elementos en cualquier nivel de anidamiento a partir de un nodo raíz:
const elems = root.querySelectorAll("*") const customEvent = new CustomEvent('custom') elems.forEach(el => { el.addEventListener("custom", (e) => console.log("Custom event received on element:", e.currentTarget)) el.dispatchEvent(customEvent) }) <div id="root"> <button>B1</button> <p>P1</p> <div> <p>P2</p> <p>P3</p> <button>B2</button> </div> </div>