Como ya sabe, los eventos generalmente aparecen en javascript, por lo que el controlador de eventos del elemento que dispara el evento se ejecuta primero, luego se llama al controlador de evento del elemento padre y así sucesivamente. Este comportamiento causa algunos problemas en un proyecto en el que estoy trabajando actualmente, preferiría tener el orden de ejecución invertido.Invertir evento burbujeando en javascript
I figuered encontrar una solución que utiliza los tiempos de espera:
$(element).mouseover(function(){
var that = this;
setTimeout(function() {
//actual event handler, but references to "this" are replaced with "that"
},$(this).parents().length)
});
Así que, básicamente, los controladores de eventos se ejecutan después de un corto tiempo de espera, el tiempo de espera depende de la profundidad del elemento en el DOM-árbol : El controlador de eventos del elemento html se ejecuta de inmediato, el controlador de eventos del elemento del cuerpo se ejecuta después de esperar 1 ms y así sucesivamente. Entonces, el orden de ejecución de los eventos se invierte.
Los resultados de mis primeras pruebas son positivos, pero aún no estoy seguro de si hay algún problema o inconveniente con esta solución. ¿Qué piensas de esta solución? Otras ideas sobre cómo resolver estos problemas también son muy apreciadas.
No entiendo por qué está estableciendo * la cantidad de padres * como * hora en milisegundos * por el tiempo de espera. – pimvdb
Lo está haciendo para asegurarse de que la ejecución del controlador de eventos en el elemento hoja se demorará tanto, que se ejecutará al final de la cadena. – WTK