就我看到循环逻辑而言,我对它的工作原理有点困惑:
定义一个存根美元函数:
window.q=[]; window.$=function(f){ q.push(f); };
在 jQuery 加载之后,将推送到存根上的任何函数添加到 jquery on load Dollar 函数:
$.each(q,function(index,f){ $(f) });
这两个美元函数如何正确访问?jQuery加载后,不是已经接管了美元功能吗?
就我看到循环逻辑而言,我对它的工作原理有点困惑:
定义一个存根美元函数:
window.q=[];
window.$=function(f){
q.push(f);
};
在 jQuery 加载之后,将推送到存根上的任何函数添加到 jquery on load Dollar 函数:
$.each(q,function(index,f){
$(f)
});
这两个美元函数如何正确访问?jQuery加载后,不是已经接管了美元功能吗?
您的存根$
函数将它接收到的每个函数推送到数组q
中。
当 jQuery 加载时,它会$
用它自己的替换你的,但它不会覆盖你的q
数组。
最后的代码使用 jQuery 的$.each()
方法来迭代你的q
数组,在你的$
每个函数上调用 jQuery 的函数(f
在循环中)。因此,就好像您一开始就$(f)
使用 jQuery$
进行调用一样。像这样使用时,$
是$(document).ready()
.
这是一种延迟注册的onread方法。
它是如何工作的
$
方法,它将所有的 onready 方法转储到一个全局数组中$
替换为 jQuery 对象,但全局数组q
在加载之前仍将所有 onready 方法传递给 jqueryq
并调用每个注册的函数。jQuery加载后,不是已经接管了美元功能吗?
这就是整个想法;中创建的临时函数<head>
为仅实现的 jQuery 创建存根jQuery(fn)
;在此定义和加载 jQuery 之间使用的任何代码$(function() { ... })
都将保存在window.q
.
加载 jQuery 后,将$
替换它,但保留的回调函数列表仍然可用,并将在批处理操作中处理。