Javascript jQuery-多个$(文档)。准备好了吗。。。?

Javascript jQuery-多个$(文档)。准备好了吗。。。?,javascript,jquery,Javascript,Jquery,问题: 如果我用$(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" s

问题:

如果我用
$(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>
jquery2.js:

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


我确信将两个调用简单地组合成一个
$(文档)是最佳做法。准备好了
,但在我的情况下不太可能。

执行是自顶向下的。先到先得


如果执行顺序很重要,请将它们组合起来。

所有操作都将在第一次调用的第一次运行基础上执行

<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>
您可以使用此快捷方式

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

//这个
$(文档).ready(函数(){
jQuery('#target').append('targetedit1
'); }); $(文档).ready(函数(){ jQuery('#target').append('targetedit2
'); }); $(文档).ready(函数(){ jQuery('#target').append('targetedit3
'); }); //与 $(文档).ready(函数(){ jQuery('#target').append('targetedit1
'); jQuery('#target').append('targetedit2
'); jQuery('#target').append('targetedit3
'); });
两者的行为将完全相同。唯一的区别是,尽管前者将取得相同的结果。后者的运行速度会快几分之一秒,并且需要更少的键入。:)

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

//旧答案

他们都会被按顺序叫来。最佳做法是将它们结合起来。
但是如果不可能的话,不要担心。页面不会爆炸。

两者都将被调用,先到先得。看一看

输出:

文件准备就绪2被调用


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

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


这是我在使用第三方库时遇到的问题。一个库抛出异常,后续库从未初始化任何内容。

不需要重新定义线程,但在最新版本的
jQuery
下,建议的语法是:

$( handler )
使用匿名函数,这看起来像

$(function() { ... insert code here ... });
请参阅此链接:


^^^编辑了我的,因为我认为人们可能会在多次运行同一个函数和在多个$(文档)中运行不同的函数之间产生混淆。ready的。^^^^希望它能有所帮助。或者更短的$(function(){//dom ready codes});记得看到$(function(){//do stuff});这是第一次,用谷歌搜索解释有多困难$(文档)。ready以如此之少的代价传达如此之多的信息……投票给简洁易懂的代码就是投票给恐怖主义。快捷方式没有任何好处,但确实会造成混乱。如果您的目标是使代码在阅读、理解和维护所需的时间方面“更短”,那么这些快捷方式将引导您走上漫长的道路这个。我刚刚花了一个小时把一个问题缩小到这一点。我的一个
$(document).ready
调用引发了一个错误,因此另一个
$(document).ready
函数从未被调用。我快发疯了,现在已经不是这样了。从jQuery3.0开始,jQuery确保一个处理程序中发生的异常不会阻止随后添加的处理程序执行。可能重复的
//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>');

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

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