问题:

如果我链接两个JavaScript文件,都是$(document)。准备好的函数,会发生什么?一个会覆盖另一个吗?或者同时执行$(document)。准备好接听电话了吗?

例如,

<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!");
});

我相信最好的做法是将两个调用合并到一个$(文档)中。准备好了,但在我的情况下不太可能。


当前回答

所有都将被执行,并且在第一次调用的基础上第一次运行!!

<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建议语法是:

$( handler )

使用匿名函数,它看起来像

$(function() { ... insert code here ... });

请看这个链接:

https://api.jquery.com/ready/

两者都会被调用,先到先得。看看这里。

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

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

输出:

文档就绪2被调用!

所有都将被执行,并且在第一次调用的基础上第一次运行!!

<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()调用都必须实际返回。如果在其中一个中抛出异常,则永远不会执行后续(不相关的)调用。

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

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