我有很多在$(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事件
- 5. 在$(document).ready()之外使用jQuery
- 6. 为什么jQuery有时需要$(document).ready?
- 7. Window.onload事件和$(document).ready()
- 8. jQuery(document).ready和'''''
- 9. 如何使用setTimeout()在jQuery(document).ready之外调用函数?
- 10. jQuery(document).ready会被调用多久?
- 11. jQuery $(document).ready()not firing
- 12. 使用$(document).ready()事件防止FOUC
- 13. 什么时候应该使用$(document).ready?
- 14. 为什么$(document).ready()不能在API调用中?
- 15. 在缩小的代码之后无法使用jQuery(document).ready初始化插件?
- 16. jQuery FancyBox Iframe - 在$ fancybox中使用$(document).ready?
- 17. 为什么这个Javascript对象在$(document).ready之后没有超出范围?
- 18. 如何调用在$(document).ready()上调用的jquery,在调用pjax时调用?
- 19. jQuery(document).ready()+等待焦点
- 20. ASP.Net,jQuery - $(document).ready(function()not firing
- 21. IE7 jQuery(document).ready()问题
- 22. $(window).load和$(document).ready?有什么区别?
- 23. 与$(document).ready()有什么不同?
- 24. Chrome和JQuery问题 - $(document).ready(function(){});在页面加载之前调用
- 25. jQuery:如何合并两个事件:$(document).ready + $(“#superid a”).hover?
- 26. jQuery:我需要在$(document).ready()中调用$(“img”)。lazyload()吗?
- 27. jquery .live()'ready'事件
- 28. 没有$(document).ready();执行jQuery的缺陷是什么?
- 29. 什么是'$(document).ready()'的非jQuery等价物?
- 30. JQuery和框架 - $(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