我对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 $(文件).ready?
- 所有浏览器(IE,FF等)的执行顺序是否相同?
醇>
谢谢。
答案 0 :(得分:34)
- 这两个就绪事件函数都会被触发吗?
醇>
是的,他们都会被解雇。
- 他们被解雇的顺序是什么,因为文件将同时为两者准备好?
醇>
以它们出现的方式(从上到下),因为ready事件将被触发一次,并且所有事件侦听器将一个接一个地得到通知。
- 是推荐这种方法还是理想情况下我们应该只有1 $(文件).ready?
醇>
这样做是可以的。如果你可以在同一个区块代码中使用它们,那么管理起来会更容易,但这就是它的全部内容。 更新:显然我忘了提及,如果您在多个文件中执行此操作,则会增加JavaScript代码的大小。
- 所有浏览器(IE,FF等)的执行顺序是否相同?
醇>
是的,因为jQuery采用了跨浏览器规范化。
答案 1 :(得分:9)
请参见此处:jQuery - is it bad to have multiple $(document).ready(function() {});和此处:Tutorials:Multiple $(document).ready()
Deferred
objects保持readyList
。.js
文件,并确保它提供并绑定自己的就绪处理程序。)答案 2 :(得分:2)
在任何当前浏览器中,您可以指望在第二个脚本引用之后按顺序执行的两个处理程序和globalVar
为2
。
答案 3 :(得分:-1)
如果您想要完全控制,我强烈建议仅一个 $(文档).ready();
如果您通过 ajax 加载HTML的部分内容,并且ajax响应包含$(文档).ready(); - 脚本并且您想要触发$(document).ready();来自 ajax回调中的script1.js,script2.js等等。你必须复制PLENTY代码....
祝你好运!
/ $(window).ready();的;)强>
答案 4 :(得分:-1)