什么是解决document.ready计时问题的最佳方法

时间:2013-07-16 21:08:29

标签: jquery javascript-events internet-explorer-8

我在document.ready中有一些代码会触发,但它的触发速度太快了。这取决于一些JavaScript创建或其他东西,否则我会产生不良影响。

我所做的是将我想要的代码放在setTimeout-Zero中,最后将它的委托推送到最后运行。这很好用。

有没有更好的方法来解决这个时间问题并确保我的代码稍后运行?我正在解决仅在IE中的问题。

$(document).ready(function() { 
        window.setTimeout(function() {
            $('#accordionmain').trigger('click');
        //$('#accordionmain').trigger('click');
    }, 0);

1 个答案:

答案 0 :(得分:3)

你可以略微区别地触发你的准备

而不是$(文件).ready();

$(document).on('imReady', function() { 
    $('#accordionmain').trigger('click');
    // ..other stuff
});

现在在您的代码中,做您需要的任何事情,当您感觉准备好时,只需致电

$(document).triggerHandler("imReady");

当然,如果你知道什么时候完成,你也可以直接打电话给$('#accordionmain').trigger('click');

我一直使用这种东西,因为我准备好了全局文件,但是我需要做一些设置,调用一堆其他东西,然后最终触发一种finalize()就绪函数说UI现在终于可以被最终用户使用了。