首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在ajax完成事件后隐藏加载微调器

在ajax完成事件后隐藏加载微调器
EN

Stack Overflow用户
提问于 2013-12-19 22:09:00
回答 1查看 2.5K关注 0票数 2

我正在使用phonegap Mobile1.4.0来构建跨平台的应用程序,并将由JQuery构建。例如,我有两个页面,一个是#主页,另一个是#详细页

代码语言:javascript
运行
复制
<div id="home" data-role="page> Home Page 
   <a href="#detail">Go Detail</a>
</div>
<div id="detail" data-role="page> Detail Page </div>

JQuery Mobile默认使用ajax将页面加载到DOM中,这很好,我的问题是,在详细页面显示之前,我需要通过ajax调用从远程服务器获取数据。我在文档上注册了ajaxStart和ajaxComplete事件,以显示和显示/隐藏微调器。

代码语言:javascript
运行
复制
$(document).ajaxStart(function(){
  $.mobile.loading('show');
});
$(document).ajaxComplete(function(){
  $.mobile.loading('hide');
});

问题是jquery mobile在ajaxComplete调用转换方法之前隐藏了加载旋转器,所以实际上$.mobile.loading(' hide ')将被调用两次。这并不好,因为数据还没有填充到DOM中,所以详细信息页面将是空白的,然后在一段时间后插入数据。

如果您不知道我在说什么,您可以查看jquery移动源代码,您可以看到5070行

代码语言:javascript
运行
复制
this._triggerCssTransitionEvents( to, from, "before" );

// TODO put this in a binding to events *outside* the widget
this._hideLoading();

所以我的问题是,在ajaxComplete之后,而不是在页面转换之后,如何真正隐藏加载微调器?

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2013-12-19 22:24:49

从使用complete更改为stop,这将阻止加载微调器过快隐藏。

代码语言:javascript
运行
复制
$(document).ajaxStart(function() {
    $.mobile.loading('show');
});

$(document).ajaxStop(function() {
    $.mobile.loading('hide');
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20683850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档