如何按顺序执行 jQuery 函数
how to execute jquery functions in a order?
正如标题所说,如何在 Jquery 中维护/控制函数的执行顺序?我知道我们可以通过addEventListener
建立许多事件处理程序,但不能保证它们的执行顺序。让我引用
请注意,即使处理程序按其顺序触发 已经建立,这个顺序不是标准保证的!测试 此代码从未观察到除 建立,但编写依赖于 此顺序。始终注意在 元素可能会以随机顺序触发。
Manning Jquery in Action 2nd edition
此外,我们可以诱使 jquery (AFAIK) 使用queue()
方法以特定顺序执行处理程序,并调用 dequeue()
方法以按照创建队列时定义的顺序调用该队列中的方法。但这不是一个永久的解决方案,因为尽管取消排队确实按定义的顺序执行它们,但在执行后也会将它们从队列中删除。所以,这是一个一次性的解决方案,一旦我们完成了队列,顺序(为此我们首先创建了队列!)就消失了。
所以,我想知道,是否有解决方法或解决方案?如果是这样,这是否取决于我们的要求?比如处理点击事件,或者通过使用 ajax 加载来加载异步数据?
"我知道我们可以通过
addEventListener
建立许多事件处理程序 ,但不能保证它们的执行顺序。
对于与 addEventListener()
绑定的事件处理程序,不保证执行顺序,但对于与 jQuery 绑定的事件处理程序,执行顺序绝对是有保证的。jQuery按照绑定的顺序调用处理程序。
这在jQuery文档中的粗体文本中并不是很明显,但如果你足够仔细地看,它就在那里。从.on()
方法doco:
(绑定到元素的事件处理程序的调用顺序与绑定它们的顺序相同。
或者从.bind()
方法更详细地
当事件到达元素时,将触发绑定到该元素的事件类型的所有处理程序。如果注册了多个处理程序,它们将始终按绑定顺序执行。执行完所有处理程序后,事件将沿着正常的事件传播路径继续。
我可以使用回调函数并在这些函数中处理事件。
function helloWorld(hello,callback)
{
//does something here with hello
callback(); //calls the callback function for final execution
}
helloWorld("world",alertUser);
function alertUser(){
alert("I am done with this function");
}
因此,如果我理解了您的问题,那么我会做类似上述的事情。
如果需要按特定顺序执行代码,为什么要使用多个事件处理程序?
如果您使用一个事件处理程序按所需的顺序执行多个函数调用,它通常会导致更易于维护和明显的代码。
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 如何从jquery函数返回变量
- 如何将具有文本类型值的var放入jQuery函数中
- Jquery函数在错误的时间提交
- 锚链接无法使用.slideUp jquery函数
- 重新分解jQuery函数
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何向这个javascript/jquery函数添加参数
- 添加类来触发jquery函数
- 更改智能表中的页面将停止JQuery函数的工作
- 使用每500ms运行一次的jquery函数是个好主意吗
- jQuery函数不能只在一个页面上工作
- 如何将jquery函数链接到vanilla选择器
- 仅在小型设备上调用jQuery函数
- 如何将jquery函数仅应用于大屏幕
- 奇怪的jquery函数行为
- Backbone listenTo不将jquery函数作为处理程序进行激发
- 在jquery函数内部设置来自jquery函数的var;t运行
- 从Jquery函数中获取一个变量