在$(document).ready()之后立即调用了什么jQuery事件?

时间:2012-01-18 13:08:42

标签: javascript jquery html dom

我在$(document).ready()上生成了大量HTML。我有一个简单的窗口系统。但不仅它是在$(document).ready()上生成的 - 还有一些HTML元素(不同的JS文件将内容放入$(document).ready())。我希望在调用$(document).ready()后生成我的窗口系统。那么在完成$(document).ready()中注册的所有代码后,如何处理要调用的函数?

8 个答案:

答案 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)

在DOM完成加载后立即调用

$(document).ready()。 在0计时器上调用pageLoad(),但要注意它是在每次部分回发后运行的。

编辑:添加旁注 - 这只会在使用ASP.NET时计算,所提到的pageLoad功能与jQuery是分开的。查看更多信息Here

答案 6 :(得分:0)

通过添加另一个已准备好文档的处理程序函数, 处理程序几乎可以肯定是就绪事件队列中的最后一个。有效地为您提供即时的“发布”就绪处理程序功能。

$(document).ready(function() {
    $(document).ready(function() {
        // code to run "after" ready 
    });
});

$(document).ready

通过连续调用此方法添加多个函数时,当DOM准备就绪时,它们会按照添加的顺序运行。

请注意,只有在没有其他人使用此“技巧”的情况下,此方法才起作用。

答案 7 :(得分:0)

您可以使用

$(window).on('load', function () {
   alert("Window Loaded");
});
$(window).load(function(){
   alert("Window Loaded");
}

已从jQuery中删除。