我有很多在$(document).ready()
上生成的HTML。我有一個簡單的窗口系統。但不僅在$(document).ready()
上生成 - 還有一些HTML元素(不同的JS文件將東西放入$(document).ready()
)。我想在調用$(document).ready()
之後生成我的窗口系統。那麼在$(document).ready()
中註冊的所有代碼完成後,如何處理要調用的函數呢?
回答
還有另外一個事件在稍後被解僱。它是$(window).load();在加載所有資源後觸發。
但是,也許你想這樣的:
function loadWindowSystem(){
// load window system here
}
$(document).ready(function(){
// do some html stuff here
loadWindowSystem();
})
這樣你就可以在單獨的功能代碼。
注意:window.load在加載所有資源時觸發,不僅僅是圖像 – 2012-01-18 13:15:59
這意味着我需要在每個使用$(document).ready(「」)生成的文檔中調用'loadWindowSystem()'來生成HTML ...而且.js的加載將如此重要... – myWallJSON 2012-01-18 13:17:13
感謝Didier,我在我的答案中改變了它。 – timing 2012-01-18 13:24:35
沒有什麼該功能後,所以如果你有一些Ajax裝載機,只認爲你能做的就是等待所有這些,然後開始渲染
修改,但我不知道爲什麼你不只是structuralize代碼消除這一點。
$(document).ready()
在DOM完成加載後立即調用。 pageLoad()
在0計時器上被調用,但要小心它在每次部分回發後運行。
編輯:添加了旁註 - 只有在使用ASP.NET時纔會計數,所提及的pageLoad功能與jQuery是分開的。查看更多信息Here
如果你想要的東西解僱所有$(document).ready()
電話之後,你可以在頁面中把這個任意位置:
$(document).ready(function() {
setTimeout(function() {
// call your code here that you want to run after all $(document).ready() calls have run
}, 1);
});
這將得到與其他所有的document.ready電話叫一起,但它會設置一個短暫的超時,在所有其他document.ready調用完成後執行。
我一般不主張使用setTimeout
,但你可以建立在@ jfriend00的回答之上創造一個更加抽象的方法:
$(document).ready(function() {
setTimeout(function() {
$(document).trigger('afterready');
}, 1);
});
$(document).bind('afterready', function() {
// call your code here that you want to run after all $(document).ready() calls have run
});
$(window).load(function(){
//some code after ready
});
這裏有很多談話圍繞着答案。這是所問問題的確切答案。 – JackArbiter 2015-03-04 02:44:37
- 1. $(document).ready之前的事件
- 2. JQuery - 在window.location之後使用$(document).ready()
- 3. 爲什麼window.onload事件發生在$(document).ready之前?
- 4. jQuery - 在調用Document Ready之後不應用CSS和JS?
- 5. 在jQuery中列出Document Ready事件
- 6. 爲什麼$(document).ready(function()不工作,但jQuery(document).ready(function($)是?
- 7. 從$(document).ready之外的函數調用到$(document).ready
- 8. 在$(document).ready之外使用jquery變量
- 9. 在$(document).ready()之外使用jQuery
- 10. 爲什麼jQuery有時需要$(document).ready?
- 11. Window.onload事件和$(document).ready()
- 12. jQuery(document).ready和'''''
- 13. jQuery(document).ready(function($)
- 14. 如何使用setTimeout()在jQuery(document).ready之外調用函數?
- 15. jQuery(document).ready會被調用多久?
- 16. jquery 1.8.2 $(document).ready函數調用失敗
- 17. jQuery $(document).ready()not firing
- 18. 使用$(document).ready()事件防止FOUC
- 19. 什麼時候應該使用$(document).ready?
- 20. 使用什麼來代替$(document).ready();?
- 21. 爲什麼$(document).ready()不能在API調用中?
- 22. 在縮小的代碼之後無法使用jQuery(document).ready初始化插件?
- 23. 爲什麼在Ajax調用之後不會觸發jQuery事件?
- 24. 在$(document).ready
- 25. jQuery FancyBox Iframe - 在$ fancybox中使用$(document).ready?
- 26. jQuery中的jQuery(function($){})和$(document).ready(function(){})有什麼區別
- 27. 當我們調用$(document).ready()時,會發生什麼?
- 28. 爲什麼我不能調用外部函數$(document).ready
- 29. 爲什麼這個Javascript對象在$(document).ready之後沒有超出範圍?
- 30. 在jQuery Mobile中做$(document).ready的正確方法是什麼?
那是一個很大的$(文件)。準備()! ;-) – janhartmann 2012-01-18 13:11:25
所以,你想要一個.ready()爲你的document.ready()?這不是jQuery的工作原理 - 與PHP上的WordPress不同,由於JavaScript基於事件的模型,jQuery無法「知道」您已經完成了所有已放入ready()函數的代碼。所以,在document.ready()之後沒有調用事件。您需要創建並等待事件自行完成,或者使用window.load()。 – Cole 2012-01-18 13:15:28