removeClass没有显示

时间:2014-02-14 18:30:44

标签: javascript jquery

我有一个转换功能,其覆盖屏幕显示为“正在加载”

SM.prototype.changeScene = function(sceneName){
    $("#Loading").removeClass("hide");
    $("#loading_curtain").removeClass("offscreen");
    $("#acrcurtain").removeClass("offscreen");
    $(".loading_text").removeClass("offscreen");

    var changeMe = function(){
         //lots of loading code (2-5 seconds)
    };

    window.setTimeout(changeMe, 100);
}

这可以正常工作,setTimeout设置为至少100.如果它被删除或更少,则不会显示加载屏幕。类被正确删除,但它不会显示在屏幕上。延迟是否有任何理由可以帮助它出现?

1 个答案:

答案 0 :(得分:0)

在浏览器中运行的JavaScript在更改时不会立即重新绘制屏幕上的元素。它通常会等到没有更多的JavaScript代码运行。

这就是为什么超时允许它重绘,以及为什么没有它就不会立即重绘。

随着超时,正在执行的JavaScript的当前位完成,然后浏览器有机会在“大量加载代码”运行之前重绘。

没有超时,JavaScript代码仍在运行,因此浏览器会一直等到它完成。