【发布时间】:2012-12-05 17:07:07
【问题描述】:
我想延迟加载 jQuery,但我有少量的内联 javascript 在 $.ready() 上运行。由于未加载 jQuery,因此这些行会引发错误并且永远不会运行。有没有办法让 $.ready() 成为一个可用的函数,但等待执行直到 jQuery 被加载?
谢谢!
【问题讨论】:
-
用函数调用替换ready,创建一个函数并将该函数放入$.ready()
标签: jquery
我想延迟加载 jQuery,但我有少量的内联 javascript 在 $.ready() 上运行。由于未加载 jQuery,因此这些行会引发错误并且永远不会运行。有没有办法让 $.ready() 成为一个可用的函数,但等待执行直到 jQuery 被加载?
谢谢!
【问题讨论】:
标签: jquery
解决此问题的通用方法的一个选项是将您的内联 javascript 放入一个函数中,并将该函数添加到一个全局可访问的数组中 - 暂时不要调用它。当document.ready 可用时,这些本质上是您要为document.ready() 安排的功能。
然后,当您加载 jQuery 时,您设置了一个 document.ready() 处理程序,该处理程序循环遍历该数组中的所有函数并调用它们。
// declare global at the top of your web page
var readyFns = [];
// in your inline code, add a function to the readyFns array
readyFns.push(myInlineFn);
// when your jQuery code loads, do this:
$(document).ready(function() {
for (var i = 0; i < readyFns.length; i++) {
readyFns[i]();
}
});
如果你想使用匿名函数,你可以像这样做中间步骤:
// in your inline code, add a function to the readyFns array
readyFns.push(function() {
// put your code here
});
【讨论】:
除了使用.ready,您还可以使用非jQuery 等效项,例如window.onload,但这些往往与.ready 不兼容,所以我不确定它们是否能满足您的需求。
显然有人提取了 jQuery 的 ready 函数,因此可以单独使用:http://code.google.com/p/domready/
【讨论】:
你应该:
example();
example() { }
(document).ready()
【讨论】: