我的元素上哪个jquery附加事件首先触发

Which jQuery-attached event on my element fires first?

本文关键字:事件 元素 jquery 我的      更新时间:2023-09-26

假设我的网页上有一个按钮:

<input type='button' id='myButton' value='Click me!' />

假设我写了下面的jQuery:

$(document).ready(function() {
    var button = $('#myButton');
    button.click(doThis);
    button.click(doThat);
}
function doThis() {
    // do something
}
function doThat() {
    //do something else
}

当按钮被点击时,我怎么知道应该先执行哪个函数?还是取决于我无法控制的事情?

处理程序按照它们附加到元素的顺序执行(参见文档):

如果注册了多个处理程序,它们将始终按照它们被绑定的顺序执行。

在你的例子中,首先执行doThis,然后执行doThat

注意:这只适用于jQuery。有关纯DOM事件处理程序的信息,请参阅@StuperUser的答案。

关于JavaScript中事件处理的一般信息,我可以推荐quirksmode.org上的文章。

jQuery事件将按照@Felix Kling和@Kyle所说的附件顺序触发。

这不是在jQuery之外的情况。根据jQuery在Action第二版-在DOM 2级事件模型(例如使用addEventListener而不是$.bind或调用它的方法)

请注意,即使处理程序按照它们建立的顺序触发,这个顺序也不受标准的保证!该代码的测试人员从未观察到除了建立顺序之外的顺序,但是编写依赖于此顺序的代码将是愚蠢的。始终要注意,在一个元素上建立的多个处理程序可能以随机顺序触发。

它们将按照您绑定的顺序执行(doThis后跟doThat)。