我正在使用phonegap Mobile1.4.0来构建跨平台的应用程序,并将由JQuery构建。例如,我有两个页面,一个是#主页,另一个是#详细页
<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事件,以显示和显示/隐藏微调器。
$(document).ajaxStart(function(){
$.mobile.loading('show');
});
$(document).ajaxComplete(function(){
$.mobile.loading('hide');
});
问题是jquery mobile在ajaxComplete调用转换方法之前隐藏了加载旋转器,所以实际上$.mobile.loading(' hide ')将被调用两次。这并不好,因为数据还没有填充到DOM中,所以详细信息页面将是空白的,然后在一段时间后插入数据。
如果您不知道我在说什么,您可以查看jquery移动源代码,您可以看到5070行
this._triggerCssTransitionEvents( to, from, "before" );
// TODO put this in a binding to events *outside* the widget
this._hideLoading();
所以我的问题是,在ajaxComplete之后,而不是在页面转换之后,如何真正隐藏加载微调器?
非常感谢你的帮助。
发布于 2013-12-19 22:24:49
从使用complete
更改为stop
,这将阻止加载微调器过快隐藏。
$(document).ajaxStart(function() {
$.mobile.loading('show');
});
$(document).ajaxStop(function() {
$.mobile.loading('hide');
});
https://stackoverflow.com/questions/20683850
复制相似问题