更改JQuery就绪调用的顺序

时间:2012-07-05 03:06:50

标签: javascript jquery

我需要订购一些onReady电话,我正在查看这些问题herehere,但一无所获。然而,很久以前,也许现在有一些东西可以解决这个问题。 所以我需要做这样的事情:

$(function (){ console.log('second call'); })
$(function (){ console.log('first call'); })

澄清为什么我需要这样做:

我需要的原因是这些调用是通过所有应用程序传播的,最重要的是:其中一些来自第三方,我无法控制它们。但我确实需要在第一时间调用我的方法,我需要在文档和文档中放置脚本。我正在处理的代码是遗留代码,我无法对其进行大量更改,因此重新考虑您所采用的方式的答案对我来说没有多大意义。如果可能或任何解决方法,我只是徘徊。

4 个答案:

答案 0 :(得分:3)

如果要控制函数执行的顺序,则应将它们放在同一个回调函数中。

$(function() {
  console.log('second call');
  console.log('first call');
});

答案 1 :(得分:0)

原则是,ready()函数将数据添加到数组(readyList),然后按添加的顺序执行它们。根据本文here

,操作readyList数组可以解决您的要求

答案 2 :(得分:0)

您可以使用数组存储函数,并使用一个onReady调用以正确的顺序调用它们。

var calls = [];

calls[2] = function() {
    console.log("third call");
};

calls[1] = function() {
    console.log("second call");
};

calls[0] = function() {
    console.log("first call");
};

$(function() {
    for (var index = 0; index < calls.length; index += 1) {
        calls[index]();
    }
});

答案 3 :(得分:0)

我很早就开始使用.ready()(在jQuery加载之后)从数组中执行函数。因为它在源代码的早期,它首先执行.ready()。在页面的下方,我可以向数组中添加函数,因此它们都会在任何其他.ready()s之前执行。

我已经将它包装在.beforeReady()函数中,并将其作为jQuery-Before-Ready放在GitHub上,供有兴趣的人使用。

https://github.com/aim12340/jQuery-Before-Ready

用法:

$.beforeReady(function() {
    alert("Ere I am JH")
});