在Android 2.2上没有触发jquery pageChange

时间:2013-05-28 07:19:38

标签: android jquery-mobile cordova

我们正在开发基于Cordova的Android应用程序。 所有HTML页面都是本地的(在assets/www文件夹中)。 我们使用jquery mobile changePage方法加载HTML页面,并在pageChange回调中注册事件(按钮点击事件等)。

对于Android 2.3及以上版本,此工作正常,请求的页面已加载,事件(点击事件等)正确绑定。

在Android 2.2上我们遇到了一个问题,在changePage方法调用请求页面已加载但pageChange事件未被触发(因此点击事件未正确绑定)

知道可能导致这种情况的原因是什么? 在较低版本的android上是否存在changePage的问题?

2 个答案:

答案 0 :(得分:0)

我不知道 pageChange 事件是否适用于Android 2.2,但有一些简单的解决方法。

可以使用

Pageshow 代替。它是在 pageChange 触发之前触发的最后一个事件,因此它也可以用于事件绑定。

$(document).on('pagebeforeshow', '#index', function(){ 

});

最后一件事是,您无需等待 changePage 来绑定点击事件。您可以使用名为delegated event binding的内容。为了使它工作,DOM中是否存在对象并不重要,因为事件将被绑定到文档。只有在存在这种需要时,它才会传播到元素,例如,如果单击了对象。

这是您委派事件绑定的方式:

$(document).on('click', '#elementID', function(){ 

});

答案 1 :(得分:0)

我认为现在是时候放弃对Android 2.2的支持了。甚至PhoneGap也正式弃用对Android 2.2的支持。只有不到5%的人使用Android 2.2 and below

根据我的经验,我通常使用pagecreate事件来绑定按钮等事件。一旦创建页面,就会触发此事件。在Android 2.2上尝试以下方法,看看它是否会帮助你。

您可以执行以下操作

$(document).on('pagecreate', '#myPageID', function(){
 //Registering button click
 $('#myButton').bind('click',function(){
   alert('button click');
 });
});