我想延迟加载jQuery,但我有少量的内联javascript在$.ready()上运行。 由于未加载 jQuery,因此这些行会引发错误并且永远不会运行。 有没有办法使 $.ready() 成为一个可用的函数,但等到 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/
你应该:
- 将 ready 替换为函数调用,例如
example();
- 创建一个函数,例如
example() { }
- 将该函数放在
(document).ready()