簡體   English   中英

更改JQuery就緒調用的順序

[英]Change order of JQuery ready calls

我需要訂購一些onReady電話,我在這里這里看到這些問題,一無所獲。 然而,很久以前,也許現在有一些東西可以解決這個問題。 所以我需要做這樣的事情:

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

澄清為什么我需要這樣做:

我需要的原因是這些調用是通過所有應用程序傳播的,最重要的是:其中一些來自第三方,我無法控制它們。 但我確實需要在第一時間調用我的方法,我需要在文檔和文檔中放置腳本。 我正在處理的代碼是遺留代碼,我無法對其進行大量更改,因此重新考慮您所采用的方式的答案對我來說沒有多大意義。 如果可能或任何解決方法,我只是徘徊。

如果要控制函數執行的順序,則應將它們放在同一個回調函數中。

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

原理是,ready()函數將數據添加到數組(readyList),然后按添加的順序執行它們。 操縱readyList陣列可以解決你的要求,按這篇文章在這里

您可以使用數組來存儲函數,並使用一個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]();
    }
});

我很早就開始使用.ready()(在jQuery加載之后)從數組中執行函數。 因為它在源代碼中很早就會先執行.ready()。 在頁面的下方,我可以向數組添加函數,因此它們都會在任何其他.ready()之前執行。

我把它包裝在一個.beforeReady()函數中,然后把它放在GitHub上作為jQuery-Before-Ready給任何感興趣的人。

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

用法:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM