我的元素上哪个jquery附加事件首先触发
Which jQuery-attached event on my element fires first?
假设我的网页上有一个按钮:
<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)。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 将事件聚焦/模糊在可编辑内容的元素上
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在IE8中不起作用的元素上触发单击事件
- 正在ng重复元素上添加事件
- 单击p元素时的javascript触发事件
- 存在每个时间元素的javascript事件
- Firefox:点击并更改未附加到文档树中的复选框元素上的事件
- 有没有一种方法可以让内联事件处理程序在元素创建后立即执行
- 将jQuery事件应用于所有类元素
- 在IE8上使用jQuery克隆HTML5元素和事件
- 单击其他元素时,我如何使用 jQuery 忽略更改事件
- 访问代码生成的输入元素上的keyup事件
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 当元素到达屏幕上的某个位置时触发事件
- Mootools:如何在点击时保持元素高亮显示并停止所有事件
- 将事件侦听器添加到文档,而不是签入元素存在,然后添加事件侦听器
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 从其他元素上的单击事件访问image src属性
- 触发“三个”的点击事件.元素