[英]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.