我想要後期加載jQuery,但是我有少量的內聯JavaScript運行在$ .ready()上。由於沒有加載jQuery,這些行會引發錯誤,從不運行。有沒有一種方法可以使$ .ready()成爲一個可用的函數,但等到執行jQuery時才加載?
謝謝!
我想要後期加載jQuery,但是我有少量的內聯JavaScript運行在$ .ready()上。由於沒有加載jQuery,這些行會引發錯誤,從不運行。有沒有一種方法可以使$ .ready()成爲一個可用的函數,但等到執行jQuery時才加載?
謝謝!
解決此問題的一種通用方法是將內聯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
});
我喜歡這個,我認爲它會工作。但有沒有辦法做到這一點與jQuery的匿名函數呢? readyFns.push(function(){});也許? – Beachhouse
@Beachhouse - 我在我的答案中添加了匿名函數。 – jfriend00
使用.ready
的相反,你可以使用非jQuery的等同物如window.onload
,但這些往往與.ready
有些不兼容,所以我不確定他們是否會滿足您的需求。
有人顯然已經提取jQuery的ready功能,因此它可以單獨使用:http://code.google.com/p/domready/
+1 domready可能是我正在尋找的東西,但代碼看起來像在那裏有一些開銷來做到這一點。 – Beachhouse
你應該:
example();
example() { }
(document).ready()
非常非常簡單的答案,但我需要檢查這將如何工作。我在DOM之前加載了多個ready塊,我認爲這會將我限制爲一種用法。 – Beachhouse
功能替換願與函數調用,創建一個函數,並把該函數內部$。就緒() – lifetimes
這是有用的? http://stackoverflow.com/questions/1828237/check-if-jquery-has-been-loaded-then-load-it-if-false – SpaceBison