问题:
如果我链接了两个都使用$(document).ready
函数的JavaScript文件,会发生什么情况?其中一个会覆盖另一个吗?或者两个$(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
中是最佳实践,但在我的情况下这是不太可能的。
发布于 2012-10-16 12:10:46
需要注意的是,每个jQuery()
调用实际上都必须返回。如果在其中抛出异常,则将永远不会执行后续(无关)调用。
无论语法如何,这一点都适用。你可以使用jQuery()
,jQuery(function() {})
,$(document).ready()
,任何你喜欢的,行为都是一样的。如果早期的块失败了,后续的块将永远不会运行。
在使用第三方库时,这对我来说是一个问题。有一个库抛出了异常,随后的库再也没有初始化任何东西。
发布于 2011-03-11 01:31:25
$(document).ready();与任何其他函数相同。一旦文档准备就绪,它就会触发-即加载。问题是当多个$(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>');
});
两者的行为将完全相同。唯一的区别是,尽管前者会达到同样的效果。后者的运行速度要快几分之一秒,而且需要的打字也更少。:)
总之,只要有可能,只使用1 $(document).ready();
//旧答案
它们都会按顺序被调用。最佳实践是将它们组合在一起。但如果这是不可能的,也不用担心。页面将不会分解。
发布于 2011-03-11 01:27:46
执行是自上而下的。先来后到。
如果执行顺序很重要,可以将它们组合在一起。
https://stackoverflow.com/questions/5263385
复制相似问题