$ .Document.Ready在同一页上两次,哪个会先执行?

时间:2013-07-05 11:27:44

标签: javascript jquery

Guy我对下面的代码感到有点困惑,在下面的代码中有两个函数然后执行第一个Function1()或Function2()?

$(document).ready(function() {
  // some code here for function1()
});
$(document).ready(function() {
  // other code here for function2()
});

4 个答案:

答案 0 :(得分:3)

首先执行功能1。 jQuery将始终按照它们绑定的顺序执行事件处理程序(请记住,委托处理程序将在直接处理程序之后执行,因为它们只会在事件通过DOM冒泡时发生 - 但这不适用于此处。)

on method docs中的括号中记录了这一点:

  

(绑定到元素的事件处理程序的调用顺序与它们绑定的顺序相同。)

答案 1 :(得分:1)

两者都将被执行。您正在注册文档准备好时触发的事件。您可以为给定对象注册多个事件,即使它是由相同的操作触发的。

通常情况下,我希望首先声明的代码首先触发,但我不会编写在不同块中具有依赖关系的代码,因为它很容易出错。

我会在基于组件的框架(如Wicket)中假设这样的场景,其中每个组件都可以拥有它的就绪块,但如果它们彼此独立,则您不必关心首先执行哪个。

如果您的代码中存在执行顺序问题,我建议您搜索其他方法来避免这种情况。正如其他答案已经说明的那样,你可以期待一个订单,但我不相信所有的浏览器实现,更糟糕的是,在未来的实现中。

因此,作为一般规则:保持简单,如果一个对象需要多个事件,只要它们不依赖它们就可以了,否则将它们放在同一个块中。

答案 2 :(得分:0)

第一个document.ready将首先执行。

答案 3 :(得分:0)

第一个函数1将首先执行,因为jQuery总是在编写时执行处理程序

<强>加

您可以根据需要拥有尽可能多的内容,并且将按照执行$()$(document).ready()函数的顺序执行它们。 (即每个处理程序都添加到队列中)