Javascript 如果我在一个DOM上附加两个相同的事件,执行顺序是什么

Javascript 如果我在一个DOM上附加两个相同的事件,执行顺序是什么,javascript,dom-events,Javascript,Dom Events,如果我在一个元素上附加两个click事件,那么这两个处理程序的执行顺序是什么。我知道jQuery的执行顺序与附加事件的顺序相同。但我不确定JavaScript的行为 如果它只是附加事件处理程序,那么如果我想覆盖所有现有的事件处理程序,我该怎么做呢? 引入了按注册顺序触发的要求(大多数浏览器都会这样做): 接下来,实现必须确定当前目标的候选事件侦听器。这必须是按注册顺序在当前目标上注册的所有事件侦听器的列表 从 目标阶段中的事件将按照元素注册的顺序触发元素上的所有侦听器,而不考虑useCaptur

如果我在一个元素上附加两个click事件,那么这两个处理程序的执行顺序是什么。我知道jQuery的执行顺序与附加事件的顺序相同。但我不确定JavaScript的行为

如果它只是附加事件处理程序,那么如果我想覆盖所有现有的事件处理程序,我该怎么做呢?

引入了按注册顺序触发的要求(大多数浏览器都会这样做):

接下来,实现必须确定当前目标的候选事件侦听器。这必须是按注册顺序在当前目标上注册的所有事件侦听器的列表

目标阶段中的事件将按照元素注册的顺序触发元素上的所有侦听器,而不考虑useCapture参数-

此外:

如果您只想使用
.on()
方法删除或覆盖jQuery附加的事件处理程序,则可以分别使用
.off()
方法删除它们。然后再次添加您想要使用的处理程序。检查文档

假设您知道已附加的处理程序是命名函数,如下所示:

function someHandler(e) {
  // do something with the event e
}

$('#myElement').on('click', someHandler);
$('#myElement').on('click', function(e) { ... } );
您可以通过调用

$('#myElement').off('click', someHandler);
如果处理程序的匿名功能如下所示:

function someHandler(e) {
  // do something with the event e
}

$('#myElement').on('click', someHandler);
$('#myElement').on('click', function(e) { ... } );
然后必须使用jQuery删除所有附加的侦听器(jQuery跟踪附加的事件/侦听器/处理程序)


我也这么认为,但我想知道我可以在哪里验证这一点的源代码。我的答案是指向源代码的链接:)您的答案是指向jQuery文档的链接,该文档涉及不推荐的
.bind()
方法。问题是关于domapi的,我在问题中只提到jQuery中附加了处理程序。可能是jQuery使用了一些逻辑来附加它。我问的是Core JS。我同意@PeterMader。DOM API的行为是什么:/jQuery附加了您需要覆盖的处理程序吗?是的,jQuery附加了JS。但我的第一个问题是将多个单击事件附加到元素的行为。其他人正确回答了事件侦听器和处理程序是按其附加的顺序调用的(jquery或vanilla javascript无所谓,jquery在引擎盖下使用本机事件)。您的问题实际上是两个独立的问题。第一个问题询问事件的顺序,另一个问题询问如何重写事件处理程序。