我正在使用jquery mobile(1.3.1)开发一个Phonegap(cordova 2.5.0)应用程序。我关于按下后退按钮后的pageinit功能行为的问题。第一次导航到(例如)静态页面时,pageinit正常触发。之后,当按下后退按钮并再次从菜单页面导航到相同的静态页面时,pageinit不会再触发。这种行为可能导致什么原因?
Jani
//PAGEINIT
$("#staticsPage").live("pageinit", function(){
alert(staticsPage Init);
init_statistics();
});
document.addEventListener("deviceready", appReady, false);
//HANDLE BACK BUTTON
function appReady(){
document.addEventListener("backbutton", function(e){
if($.mobile.activePage.is('#menuPage'))
{
e.preventDefault();
navigator.app.exitApp();
}
else if($.mobile.activePage.is('#staticsPage'))
{
e.preventDefault();
$.mobile.changePage($("#menuPage"));
}
else
{
navigator.app.backHistory();
}
}, false);
}
答案 0 :(得分:0)
只有在将页面加载到DOM中时才会触发pageinit
事件,因此只会触发一次。
在初始化页面上触发,初始化后发生
我会使用pageshow
事件。导航到页面时会触发此操作:
转换动画完成后在“toPage”上触发。
所以,请尝试使用此代码:
$('#staticsPage').on('pageshow', function(){
alert(staticsPage Init);
init_statistics();
});
document.addEventListener("deviceready", appReady, false);
//HANDLE BACK BUTTON
function appReady()
{
document.addEventListener('backbutton', function(e){
var activePage = $.mobile.activePage.attr('id');
if(activePage == 'menuPage')
{
e.preventDefault();
navigator.app.exitApp();
}
else if(activePage == 'staticsPage')
{
e.preventDefault();
$.mobile.changePage('#menuPage');
}
else
{
navigator.app.backHistory();
}
}, false);
}
检查here以获取jQuery Mobile事件列表。