我的腳本加載後,我正在做一個Ajax請求來獲得一些翻譯。這應該總是在文檔準備就緒後返回,因爲我將腳本加載到頁面的底部,但我仍然很好奇在文檔就緒狀態下是否可以獲得Deferred Object。我可以得到一個延遲document.ready()的jQuery?
通過這種方式,可以確保文檔已準備就緒,並且在做其他事情之前成功返回Ajax調用,例如,像這樣:
$.when($.ajax('translations'), document.ready())
.then(function(){
// Start doing stuff here
});
感謝,簡單明瞭。這可能也適用於全局變量或類似的東西。 – Daff 2011-05-30 15:24:59
@Daff,絕對。我個人更喜歡使用'data()'而不是全局變量,因爲它更靈活,避免污染全局名稱空間。 – 2011-05-30 15:34:36
迂腐的筆記。根本沒有理由存儲變量。在設置階段你只需要它,所以使用閉包範圍:'(function(){var deferred = new $ .Deferred(); $(function(){deferred.resolve();}); $ .when($。 ajax('foo'),deferred).then(function(){});})();'...如果您使用本地範圍,則無需存儲,只需讓閉包爲您綁定即可。 – ircmaxell 2012-03-26 14:16:36