3

我想延迟加载 jQuery,但我有少量的内联 javascript 在 $.ready() 上运行。由于未加载 jQuery,因此这些行会引发错误并且永远不会运行。有没有一种方法可以使 $.ready() 成为可用函数,但等待执行直到加载 jQuery?

谢谢!

4

3 回答 3

4

解决此问题的通用方法的一种选择是将您的内联 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
});
于 2012-12-05T17:08:47.980 回答
1

除了使用.ready,您可以使用非 jQuery 等效项,例如window.onload,但这些往往与 不兼容.ready,所以我不确定它们是否能满足您的需求。

显然有人已经提取了 jQuery 的 ready 函数,所以它可以单独使用:http ://code.google.com/p/domready/

于 2012-12-05T17:10:06.267 回答
1

你应该:

  1. 用函数调用替换 ready 例如example();
  2. 创建一个函数,例如example() { }
  3. 把那个函数放在里面(document).ready()
于 2012-12-05T17:10:48.983 回答