我在$(document).ready()
上生成了大量HTML。我有一个简单的窗口系统。但不仅它是在$(document).ready()
上生成的 - 还有一些HTML元素(不同的JS文件将内容放入$(document).ready()
)。我希望在调用$(document).ready()
后生成我的窗口系统。那么在完成$(document).ready()
中注册的所有代码后,如何处理要调用的函数?
答案 0 :(得分:8)
还有另一个事件稍后被解雇。它是$(窗口).load();加载所有资源后会触发此事。
但也许你想要这个:
function loadWindowSystem(){
// load window system here
}
$(document).ready(function(){
// do some html stuff here
loadWindowSystem();
})
这样您就可以在函数中分离代码。
答案 1 :(得分:8)
$(window).load(function(){
//some code after ready
});
答案 2 :(得分:4)
我通常不主张使用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
});
答案 3 :(得分:2)
如果您希望在所有$(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调用完成后执行。
答案 4 :(得分:0)
此函数后没有任何内容,所以如果你有一些ajax加载器,只能认为你可以做的就是等待所有这些,然后开始渲染
编辑但我想知道你为什么不结构化你的代码来消除这个。
答案 5 :(得分:0)
$(document).ready()
。
在0计时器上调用pageLoad()
,但要注意它是在每次部分回发后运行的。
编辑:添加旁注 - 这只会在使用ASP.NET时计算,所提到的pageLoad功能与jQuery是分开的。查看更多信息Here
答案 6 :(得分:0)
通过添加另一个已准备好文档的处理程序函数, 处理程序几乎可以肯定是就绪事件队列中的最后一个。有效地为您提供即时的“发布”就绪处理程序功能。
$(document).ready(function() {
$(document).ready(function() {
// code to run "after" ready
});
});
通过连续调用此方法添加多个函数时,当DOM准备就绪时,它们会按照添加的顺序运行。
请注意,只有在没有其他人使用此“技巧”的情况下,此方法才起作用。
答案 7 :(得分:0)
您可以使用
$(window).on('load', function () {
alert("Window Loaded");
});
$(window).load(function(){
alert("Window Loaded");
}
已从jQuery中删除。