在JQuery中显示加载微调器

时间:2014-03-26 09:16:27

标签: jquery jquery-mobile cordova

加载微调器不会显示,即使页面渲染和显示大约需要4秒钟。我做了什么:点击按钮我调用一个方法,在方法的开头我称之为:function taskStat(){$ .mobile.loading(' show'); $ .mobile.changePage(" #taskStatistics",{transition:" none"}); .....然后调用其他方法,包括db调用(没有ajax调用)

在最后一种方法中我最后称之为:$ .mobile.loading(' hide');

从主页面到taskStatistics页面,动态创建和显示的本地数据库调用和html项目大约需要4到5秒,在此期间页面会冻结在主页上,然后转到统计信息页面。为什么装载机不显示?任何建议的解决方法?谢谢

部分代码:

    function taskStat(){
        $.mobile.loading('show',{theme:'d',textonly:false,html:""});
        $.mobile.changePage("#taskStatistics",{transition: "none"});
        statQueries= new Array();
        offsetInitial=0;
        db.transaction(taskStatsBefore, errorCB);
    } 

    function taskStatsBefore(tx){
        var query="select COUNT(*) AS MYCOUNT1 from TASKS_GVT";
        tx.executeSql(query,[],taskStatsBeforeCb,errorCB);
    }

...我采用db结果并动态创建下一页的html元素的其他几种方法 最后一个方法以此结尾:$ .mobile.loading(' hide');

1 个答案:

答案 0 :(得分:1)

我建议添加超时为0或100毫秒的setTimeout。 如果没有超时,浏览器会等待,直到任务完成,然后刷新UI。

function taskStat(){
    $.mobile.loading('show',{theme:'d',textonly:false,html:""});
    $.mobile.changePage("#taskStatistics",{transition: "none"});
    setTimeout(function(){
        statQueries= new Array();
        offsetInitial=0;
        db.transaction(taskStatsBefore, errorCB);
    },0);
} 

function taskStatsBefore(tx){
    var query="select COUNT(*) AS MYCOUNT1 from TASKS_GVT";
    tx.executeSql(query,[],taskStatsBeforeCb,errorCB);
}