正如您所知道的,事件通常会以javascript的形式冒泡,因此首先执行触发事件的元素的事件处理程序,然后再调用父元素的事件处理程序,等等。这种行为会导致我目前正在处理的项目出现一些问题,我宁愿将执行顺序颠倒过来。在javascript中冒泡的逆向事件
我figuered指出,使用超时解决方案:
$(element).mouseover(function(){
var that = this;
setTimeout(function() {
//actual event handler, but references to "this" are replaced with "that"
},$(this).parents().length)
});
所以基本上,该事件处理程序是一个短暂的停顿后执行,等待的时间取决于DOM树中的元素的深度: html元素的事件处理程序立即执行,body元素的事件处理程序在等待1ms之后执行,等等。所以事件的执行顺序是相反的。
我第一次测试的结果是肯定的,但我仍然不确定这个解决方案是否存在问题或缺点。你对这个解决方案有什么看法?关于如何解决这个问题的其他想法也非常感谢。
我不明白你为什么把父母*的数量设置为*以毫秒为单位的时间*。 – pimvdb
他这样做是为了确保叶元素上的执行事件处理程序将被延迟太多,以至于它将在链中最后执行。 – WTK