我的元素上的哪个 jQuery 附加事件首先触发?
假设我的网页上有一个按钮:
<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
}
单击该按钮时,我如何知道应该首先执行哪个函数?或者这取决于我无法控制的事情?
Suppose I have a button on my web page:
<input type='button' id='myButton' value='Click me!' />
Suppose that I write the following jQuery:
$(document).ready(function() {
var button = $('#myButton');
button.click(doThis);
button.click(doThat);
}
function doThis() {
// do something
}
function doThat() {
//do something else
}
When the button is clicked, how can I know which function should execute first? Or does it depend on things beyond my control?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
处理程序按照附加到元素的顺序执行(请参阅文档):
因此,在您的情况下,首先执行
doThis
,然后执行doThat
。注意:这仅适用于 jQuery。有关纯 DOM 事件处理程序的信息,请参阅 @ StuperUser的回答。
有关 JavaScript 中事件处理的一般信息,我可以推荐quirksmode.org 上的文章 。
The handlers are executed in the order they have been attached to the element (see the documentation):
So in your case, first
doThis
and thendoThat
will be executed.Note: This only applies to jQuery. For information about pure DOM event handlers, see @StuperUser's answer.
For general information about event handling in JavaScript, I can recommend the articles at quirksmode.org.
正如 @Felix Kling 和 @Kyle 所说,jQuery 事件将按照附件的顺序触发。
在 jQuery 之外,情况并非如此。根据 jQuery in Action Second Edition - 在 DOM Level 2 事件模型上(例如使用 addEventListener 而不是 < code>$.bind 或调用它的方法)
使用 jQuery 的另一个原因。
jQuery events will fire in order of attachment as @Felix Kling and @Kyle have said.
This is not the case outside of jQuery. According to jQuery in Action Second Edition - on the DOM Level 2 event model (e.g. using addEventListener rather than
$.bind
or methods that call it)Yet another reason to use jQuery.
它们将按照您绑定它们的顺序执行(doThis 后 doThat)。
They will execute in the order you bind them (doThis followed by doThat).