如何触发mobile.loading方法?

时间:2012-09-06 15:19:52

标签: jquery jquery-mobile cordova

我正在尝试做一些看似相当简单的事情。基本上我有一个Ajax事件监听器,它检查Ajax启动事件和Ajax结束事件,当检测到start或end even时,它应该运行$.mobile.loading('show'),当Ajax事件结束时,它应该运行{{1} }。但是,加载图标和文本不会显示。

认为我的Ajax事件启动有问题,事件结束侦听器没有正确地启动Ajax启动和结束事件我用正常工作的标准警报替换了$.mobile.loading('hide')。这是我的代码:

$.mobile.loading('show')

$("#page1").ajaxStart(function() { $.mobile.loading('show'); });

我知道我做错了什么,但我不知道是什么。有什么想法吗?

哦,重要的是,这个JQM应用程序在cordova(1.7.0)和jquery 1.8.1以及jquery mobile 1.1.1下运行

按顺序加载库,并在设备就绪事件后加载事件侦听器。

这样:

$("#page1").ajaxEnd(function() { $.mobile.loading('hide'); });

编辑:以下是我的文档标题:

function onBodyLoad() { document.addEventListener("deviceready", onDeviceReady, false); }

function onDeviceReady() {
    / load the ajax start and end listeners code displayed above /
}

第1页有一些由JQM增强的表单字段,当用户单击提交按钮时,它会运行一个函数来检查用户是否连接到网络,如果是,则通过Ajax提交该数据。

1 个答案:

答案 0 :(得分:0)

您确定在调用ajax时初始化了jquerymobile吗?以下是您可以尝试和为我工作的内容。 (您可以通过命名空间变量进一步清理代码,但这应该给出一个想法)

var deviceready = false, pageinitialized = false;
function onBodyLoad() { 
   document.addEventListener("deviceready", onDeviceReady, false); 
   $(document).bind("pageinit", function(){
     pageinitialized =true;
     myloading();
   });
}

function onDeviceReady() {
 / load the ajax start and end listeners code displayed above /
  myloading();
}

var myLoading = function(){
 if ( !deviceready || !pageinitialized ) {
  return
 }
 //Your ajax call here

}