有没有办法保证事件处理程序成为第一个响应者?
例如,假设我们将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
是否有办法使其首先处理?
答案 0 :(得分:0)
实际上,您无法实际控制触发事件处理程序的顺序。它们被设计成按插入顺序被触发,我不认为你可以改变它。你确实可以在事件链的顶部和底部触发事件,但它并不总能解决问题,在我看来它也会变得混乱。重新审视设计是我的建议。
答案 1 :(得分:0)
如果使用JQuery
来绑定事件,则可以保证处理程序的触发顺序与它们绑定的顺序相同。
尝试兼并并检查浏览器控制台:
但实际上没有办法存在,通过这个你可以控制事件处理程序被触发的顺序。
请注意,W3C模型没有说明哪个事件处理程序 首先解雇。
QuirksMode's Advanced event registration models
你的问题:
是否有第二种方法可以使它首先被处理?