当在同一HTML页面上使用的两个JavaScript文件中有两个jQuery$(document).ready调用时会发



我有一个关于jQuery $(document).ready 的问题

假设我们有一个HTML页面,其中包含2个JavaScript文件

<script language="javascript" src="script1.js" ></script>
<script language="javascript" src="script2.js" ></script>

现在假设在这两个脚本文件中,我们都有如下的$(document)

内部script1.js:

$(document).ready(function(){
    globalVar = 1;
})

内部script2.js:

$(document).ready(function(){
    globalVar = 2;
})

现在我的问题是:

  1. 这两个就绪事件函数都会被触发吗
  2. 如果是,他们被解雇的顺序是什么,因为文件将同时准备好他们两个的时间
  3. 这种方法是推荐的还是我们理想情况下应该只有1$(文档)。准备好了吗
  4. 所有浏览器(IE、FF等)的执行顺序是否相同

谢谢。

  1. 这两个就绪事件函数都会被触发吗

是的,他们都会被解雇。

  1. 他们被解雇的顺序是什么,因为文件将同时为他们两人准备好

按照它们的显示方式(从上到下),因为就绪事件将被触发一次,所有事件侦听器都将相继收到通知。

  1. 这种方法是推荐的,还是我们理想情况下应该只有1美元(文档)。准备好了

这样做是可以的。如果你可以将它们放在同一个块代码中,那么管理起来会更容易,但仅此而已。更新:显然我忘了提到,如果你在多个文件中这样做,你会增加JavaScript代码的大小。

  1. 所有浏览器(IE、FF等)的执行顺序是否相同

是的,因为jQuery手头有跨浏览器规范化。

请参阅此处:jQuery-拥有多个$(document).ready(function(){};这里:教程:Multiple$(document).ready()

  1. 附加顺序。jQuery在内部维护一个带有Deferred对象的readyList
  2. 这在一定程度上是品味问题。拥有一个就绪处理程序将使您对正在发生的一切有一个很好的概述,而多个
  3. 是-附随顺序

在任何当前浏览器中,您都可以指望两个处理程序都按脚本包含的顺序执行,并且globalVar是第二个脚本引用之后的2

如果您想要完全控制,我强烈建议您只使用一个$(document).ready();

如果您通过ajax加载HTML的部分,并且ajax响应包括$(document).ready()-脚本,并且您想要激发$(document).ready();来自ajax回调中的script1.js、script2.js等。。你必须复制大量的代码。。。。

祝你好运!

/$(window).ready();)

  1. 两人都会被解雇
  2. 一旦所有尘埃落定,变量的值将为2
  3. 不建议使用的主要内容是使用两个不同的JS文件,如Google PageSpeed和Yahoo YSlow所建议的,最好将所有Javascript代码都放在同一个文件中。至于相同的事件处理程序,老实说,我看不出有什么理由这么做,这只会让代码的可读性更差
  4. 我对此没有答案

最新更新