2013-05-28 57 views
1

我們正在開發基於Cordova的Android應用程序。 所有的HTML頁面都是本地的(在assets/www文件夾中)。 我們使用jquery mobile changePage方法加載HTML頁面並在pageChange回調中註冊事件(按鈕點擊事件等)。jquery pageChange在android 2.2上沒有觸發

對於android 2.3及以上版本,這工作正常,請求的頁面加載和事件(點擊事件等)被正確綁定。

在Android 2.2,我們正面臨着一個問題,在changePage方法調用請求的頁面加載,但pageChange事件不會觸發(因此點擊事件不正確綁定)。

任何想法可能會造成這種情況? 在較低版本的android上是否有問題changePage

+0

你能告訴我們你的JavaScript? – Gajotres

回答

0

我不知道是否pageChange事件正在使用Android 2.2,但有一些簡單的解決方法。

Pageshow可以用來代替。這是在pageChange之前觸發的最後一個事件觸發器,因此它也可以用於事件綁定。

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

}); 

最後一件事,你並不需要等待changePage綁定click事件。你可以使用一種叫做delegated event binding的東西。對於它的工作,無論對象是否存在於DOM中都不重要,因爲事件將綁定到文檔。只有當這種需求存在時,它纔會傳播到元素,例如,如果點擊了對象。

這就是你怎麼辦委託的事件綁定:

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

}); 
+0

即使pageHow沒有被觸發(儘管pagebeforeshow被觸發)。 –

+0

嘗試使用委託事件綁定,它可以工作(所以我們不再需要回調來註冊點擊/點擊事件)。但是我們仍然需要一個回調pageshow/pagechange來更新UI(根據需要根據一些條件)或者初始化一些數據。 –

+0

爲什麼不使用pagebeforeshow進行UI更新? – Gajotres

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'); 
}); 
});