首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery -多个$(document).ready ...?

jQuery -多个$(document).ready ...?
EN

Stack Overflow用户
提问于 2011-03-11 01:26:55
回答 4查看 193.8K关注 0票数 380

问题:

如果我链接了两个都使用$(document).ready函数的JavaScript文件,会发生什么情况?其中一个会覆盖另一个吗?或者两个$(document).ready都会被调用吗?

例如,

代码语言:javascript
复制
<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:

代码语言:javascript
复制
$(document).ready(function(){
    $("#page-title").html("Document-ready was called!");
});

jquery2.js:

代码语言:javascript
复制
$(document).ready(function(){
    $("#page-subtitle").html("Document-ready was called!");
});

我确信简单地将两个调用合并到一个$(document).ready中是最佳实践,但在我的情况下这是不太可能的。

EN

回答 4

Stack Overflow用户

发布于 2012-10-16 12:10:46

需要注意的是,每个jQuery()调用实际上都必须返回。如果在其中抛出异常,则将永远不会执行后续(无关)调用。

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

在使用第三方库时,这对我来说是一个问题。有一个库抛出了异常,随后的库再也没有初始化任何东西。

票数 79
EN

Stack Overflow用户

发布于 2011-03-11 01:31:25

$(document).ready();与任何其他函数相同。一旦文档准备就绪,它就会触发-即加载。问题是当多个$(Document).ready()被触发时会发生什么,而不是当您在多个$(Document).ready()中触发相同的函数时

代码语言:javascript
复制
//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();

//旧答案

它们都会按顺序被调用。最佳实践是将它们组合在一起。但如果这是不可能的,也不用担心。页面将不会分解。

票数 32
EN

Stack Overflow用户

发布于 2011-03-11 01:27:46

执行是自上而下的。先来后到。

如果执行顺序很重要,可以将它们组合在一起。

票数 21
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5263385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档