Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.Document.Ready在同一页上执行两次,哪个将首先执行?_Javascript_Jquery - Fatal编程技术网

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

Javascript $.Document.Ready在同一页上执行两次,哪个将首先执行?,javascript,jquery,Javascript,Jquery,盖伊的我对下面的代码有点困惑,在下面的代码中有两个函数,然后哪个将执行第一个函数1()或函数2() 函数1将首先执行。jQuery将始终按照事件处理程序绑定的顺序执行事件处理程序(请记住,委托处理程序将在直接处理程序之后执行,因为它们只在事件通过DOM冒泡时发生,但在这里不适用) 这一点记录在附录中: (绑定到元素的事件处理程序的调用顺序与绑定它们的顺序相同。) 函数1将首先执行。jQuery将始终按照事件处理程序绑定的顺序执行事件处理程序(请记住,委托处理程序将在直接处理程序之后执行,因为它们

盖伊的我对下面的代码有点困惑,在下面的代码中有两个函数,然后哪个将执行第一个函数1()或函数2()


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

这一点记录在附录中:

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


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

这一点记录在附录中:

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


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

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

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

Plus


您可以拥有任意多个,它们将按照执行
$()
$(document).ready()
函数的顺序执行。(即,每个处理程序都添加到队列中)

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

Plus


您可以拥有任意多个,它们将按照执行
$()
$(document).ready()
函数的顺序执行。(即每个处理程序都添加到队列中)

这两个处理程序都将执行。您正在注册文档准备就绪时要触发的事件。您可以为给定对象注册多个事件,即使它是由同一操作触发的

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

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

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


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

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

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

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

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


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

为什么需要两个?首先执行顶部的一个。为什么一个页面上有两个document ready?我有时使用2
$(document)。ready
如果我有一个aspx页面和ascx用户控件,那么可能会有一些借口;)在呈现的文档中,它将使2
$(document).ready
(或更多,如果添加了更多.ascx文件并需要处理它),第一个是第一个,第二个是第二个。。就这样@user2553512显示随机行为的证明,很可能与函数中的特定代码有关。如果函数仅包含console.log(),它将始终首先记录第一条消息。为什么需要两条消息?首先执行顶部的消息。为什么一个页面上有两个document ready?我有时使用2
$(document)。ready
如果我有一个aspx页面和ascx用户控件,那么可能会有一些借口;)在呈现的文档中,它将使2
$(document).ready
(或更多,如果添加了更多.ascx文件并需要处理它),第一个是第一个,第二个是第二个。。就这样@user2553512显示随机行为的证明,很可能与函数中的特定代码有关。如果函数仅包含console.log(),它将始终首先记录第一条消息。即使对于
addEventListener
@PaulS也是如此。更准确地说,是这样,但随后()。在您的问题中提及随机行为可能会更好。你没有在一个或两个函数中执行异步操作,是吗?例如,一个Ajax电话?谢谢@T.J.Crowder-你在这个答案上做了所有繁重的工作。我在DOM3规范中没有看到这一点,事实上,尽管我知道我在DOM2规范中看到了相关的部分,但我在Google中找不到它。向保罗道歉。@nnnnnn:很高兴加入。:-)甚至对于
addEventListener
@PaulS来说也是如此:更准确地说,是这样,但是接着()。在你的问题中提到随机行为可能会更好。你没有在一个或两个函数中执行异步操作,是吗?E
$(document).ready(function() {
  // some code here for function1()
});
$(document).ready(function() {
  // other code here for function2()
});