1

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

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

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

我需要的原因是这些调用分布在所有应用程序中,最重要的是:其中一些来自第三方,我无法控制它们。但是我确实需要首先调用我的方法,并且我需要将脚本放在文档的最前面。我正在处理的代码是遗留代码,我无法对其进行太多更改,因此重新考虑您的工作方式之类的答案对我来说没有多大意义。如果可能或任何解决方法,我只是在徘徊。

4

4 回答 4

3

如果你想控制函数执行的顺序,你应该把它们放在同一个回调函数中。

$(function() {
  console.log('second call');
  console.log('first call');
});
于 2012-07-05T03:11:14.023 回答
0

原理是,ready()函数将东西添加到一个数组(readyList)中,然后按照添加的顺序执行。操作 readyList 数组可能会解决您的要求,根据本文here

于 2012-07-05T03:20:34.513 回答
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]();
    }
});
于 2012-07-05T03:35:03.133 回答
0

我很早就有一个 .ready() 来解决它(在 jQuery 加载之后),它执行数组中的函数。因为它在源代码中非常早,所以首先执行 .ready()。在页面的下方,我可以将函数添加到数组中,因此它们都在任何其他 .ready() 之前执行。

我将它封装在一个 .beforeReady() 函数中,并将其作为 jQuery-Before-Ready 放在 GitHub 上,供任何感兴趣的人使用。

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

用法:

$.beforeReady(function() {
    alert("Ere I am JH")
});
于 2017-04-18T17:19:05.860 回答