1

就我看到循环逻辑而言,我对它的工作原理有点困惑:

  1. 定义一个存根美元函数:

    window.q=[];
    window.$=function(f){
      q.push(f);
    };
    
  2. 在 jQuery 加载之后,将推送到存根上的任何函数添加到 jquery on load Dollar 函数:

    $.each(q,function(index,f){
      $(f)
    });
    

这两个美元函数如何正确访问?jQuery加载后,不是已经接管了美元功能吗?

4

3 回答 3

1

您的存根$函数将它接收到的每个函数推送到数组q中。

当 jQuery 加载时,它会$用它自己的替换你的,但它不会覆盖你的q数组。

最后的代码使用 jQuery 的$.each()方法来迭代你的q数组,在你的$每个函数上调用 jQuery 的函数(f在循环中)。因此,就好像您一开始就$(f)使用 jQuery$进行调用一样。像这样使用时,$$(document).ready().

于 2013-04-08T04:45:39.327 回答
1

这是一种延迟注册的onread方法。

它是如何工作的

  1. 我们注册了一个存根$方法,它将所有的 onready 方法转储到一个全局数组中
  2. 加载 jquery后,将$替换为 jQuery 对象,但全局数组q在加载之前仍将所有 onready 方法传递给 jquery
  3. jQuery onready被触发时,我们遍历全局数组q并调用每个注册的函数。
于 2013-04-08T04:47:18.890 回答
1

jQuery加载后,不是已经接管了美元功能吗?

这就是整个想法;中创建的临时函数<head>为仅实现的 jQuery 创建存根jQuery(fn);在此定义和加载 jQuery 之间使用的任何代码$(function() { ... })都将保存在window.q.

加载 jQuery 后,将$替换它,但保留的回调函数列表仍然可用,并将在批处理操作中处理。

于 2013-04-08T04:49:58.090 回答