jquery事件优先级

时间:2012-03-23 16:53:48

标签: javascript jquery events

我有两个函数挂在表单的submit事件上。每个函数都在不同的位置,一个函数可以影响另一个函数。

如何强制其中一个函数与最低优先级挂钩(即最后执行)?

3 个答案:

答案 0 :(得分:7)

我能想到四种方式:

  1. 自己管理回调,并且只有一个事件处理程序以所需的顺序调用函数。

  2. 在最后应该触发的函数中,以零毫秒超时执行实际工作。如果所有其他函数同步工作(并且您可以使用事件冒泡期间未发生的最终函数),那么这将实现相同的目的。

  3. 在DOM树中将要被触发的最后一个处理程序绑定在更高的位置。你必须测试它是否适用于submit事件;冒泡这些事件在IE中不起作用,但jQuery docs提到这已在jQuery中规范化了。值得一试。

  4. 有点类似于1.,当绑定除低优先级之外的任何其他处理程序时,取消绑定后者,绑定新的,最后重新绑定最后一个要运行的。

答案 1 :(得分:2)

您可以为处理程序使用自定义事件,并让第一个处理程序捕获提交以阻止它,执行其操作,为第二个处理程序触发事件并让第二个执行提交

答案 2 :(得分:1)

如果您想使用/可以使用自定义事件,可以使用https://github.com/fusion-events/fusion-framework