在jQuery Ready之前加载javascript?

时间:2014-11-17 18:32:36

标签: javascript jquery document-ready

JS newb在这里被交给一个项目接管。我有一种情况,我能够工作(并让我永远这样做),但我不理解它背后的JS内部。有人能说清楚这个吗?

我有一个JS文件,在js文件中有两种不同类型的功能块,我将其称为last.js b / c它是列出的最后一个文件:

  1. 传递jQuery对象的立即函数
  2. (function ($) {
    ...
    }(jQuery));
    
    1. 之后您就拥有了标准的jQuery doc加载代码:
    2. $(function () {
      ...
      });
      

      这个JS文件是我页面上引用的最后一个文件,我认为它将是页面执行时调用/加载的最后一个文件。但事实并非如此。首先调用立即函数(1)。接下来,加载并执行jqueryvalidation.js文件。最后,调用last.js中的jQuery ready()函数。

      所以这有效地在我的其他js库之前运行立即函数,然后它按顺序加载/运行其他js文件,最后它返回到我的last.js文件并完成它。如何在我的jqueryvalidation.js文件之前调用列表中的最后一个文件?并且立即函数是通过jQuery传递的,因此jQuery必须已经加载并且页面应该在那时准备好。

      让我使用jqueryvalidation.js我必须将我的自定义验证代码放在即时窗口中。如果我把它放在jQuery ready函数中,它会在验证代码解析页面后调用,并且不会执行任何操作。

      为什么同一个js文件中的这两个函数的执行顺序完全不同?

1 个答案:

答案 0 :(得分:0)

$(function(){})$(document).ready(function(){})的简写,这意味着在文档加载之前不会执行。

所以,这里发生的是你的代码正在运行,当它到达$(function(){})时,它会向事件队列添加一个函数,然后运行其余的代码。

然后转到下一个<script>标签,依此类推,直到它被解析为页面。一旦DOM准备就绪,那么你的函数就会运行。