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被称为!