有没有办法强制事件处理顺序?

时间:2014-06-04 06:58:56

标签: jquery

有没有办法保证事件处理程序成为第一个响应者?

例如,假设我们将2个事件处理程序绑定到同一个textarea

function first(event) {
    event.stopPropagation();
    console.log('first function');
}

function second(event) {
    console.log('second function');
}

$('body').on('keypress', 'textarea', first);
...
$('body').on('keypress', 'textarea', second);

假设我们无法控制事件处理程序订单代码声明,second是否有办法使其首先处理?

2 个答案:

答案 0 :(得分:0)

实际上,您无法实际控制触发事件处理程序的顺序。它们被设计成按插入顺序被触发,我不认为你可以改变它。你确实可以在事件链的顶部和底部触发事件,但它并不总能解决问题,在我看来它也会变得混乱。重新审视设计是我的建议。

答案 1 :(得分:0)

如果使用JQuery来绑定事件,则可以保证处理程序的触发顺序与它们绑定的顺序相同。

尝试兼并并检查浏览器控制台:

Demo 1

Demo 2

但实际上没有办法存在,通过这个你可以控制事件处理程序被触发的顺序。

  

请注意,W3C模型没有说明哪个事件处理程序   首先解雇。

QuirksMode's Advanced event registration models

你的问题:

  

是否有第二种方法可以使它首先被处理?

Check out this post