jQuery – 多个$(文档).ready …?

题:

如果我链接到两个JavaScript文件,都带有$(document).ready函数,会发生什么? 一个覆盖另一个吗? 或者做$(document).ready被调用?

例如,

 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> <script type="text/javascript" src="http://.../jquery1.js"></script> <script type="text/javascript" src="http://.../jquery2.js"></script> 

jquery1.js:

 $(document).ready(function(){ $("#page-title").html("Document-ready was called!"); }); 

jquery2.js:

 $(document).ready(function(){ $("#page-subtitle").html("Document-ready was called!"); }); 

我相信最好的做法是将两个调用简单地结合成一个$(document).ready但在我的情况下是不可能的。

所有将被执行,并首先调用第一次运行的基础!

 <div id="target"></div> <script> $(document).ready(function(){ jQuery('#target').append('target edit 1<br>'); }); $(document).ready(function(){ jQuery('#target').append('target edit 2<br>'); }); $(document).ready(function(){ jQuery('#target').append('target edit 3<br>'); }); </script> 

演示

我还想提一件事

代替这个

 $(document).ready(function(){}); 

你可以使用这个快捷方式

 jQuery(function(){ //dom ready codes }); 

需要注意的是每个jQuery()调用都必须返回。 如果一个exception被抛出,后续的(不相关的)调用将永远不会被执行。

不pipe语法如何,这都适用。 你可以使用jQuery()jQuery(function() {})$(document).ready() ,无论你喜欢什么,行为都是一样的。 如果早期失败,后续的块将永远不会运行。

使用第三方库时,这对我来说是个问题。 一个库引发了一个exception,随后的库永远不会初始化任何东西。

$(文件)。就绪(); 和其他function一样。 一旦文件准备就绪,即加载,就会启动。 问题是当多个$(document).ready()被激发而不是当你在多个$(document).ready()中激发相同的函数时会发生什么

 //this <div id="target"></div> $(document).ready(function(){ jQuery('#target').append('target edit 1<br>'); }); $(document).ready(function(){ jQuery('#target').append('target edit 2<br>'); }); $(document).ready(function(){ jQuery('#target').append('target edit 3<br>'); }); //is the same as <div id="target"></div> $(document).ready(function(){ jQuery('#target').append('target edit 1<br>'); jQuery('#target').append('target edit 2<br>'); jQuery('#target').append('target edit 3<br>'); }); 

两者将performance完全一样。 唯一的区别是,虽然前者会取得相同的结果。 后者运行速度会快一点,而且需要的打字次数也较less。 🙂

总之,有可能只使用1 $(document).ready();

//老回答

他们都会按顺序打电话。 最好的做法是把它们结合起来。 但不要担心,如果不可能的话。 该页面不会爆炸。

执行是自上而下的。 先到先得。

如果执行顺序很重要,请合并它们。

两人都会打电话,先到先得。 看看这里

 $(document).ready(function(){ $("#page-title").html("Document-ready was called!"); }); $(document).ready(function(){ $("#page-title").html("Document-ready 2 was called!"); }); 

输出:

文档就绪2被称为!