Javascript jQuery Mobile:按下back btn时清除页面

Javascript jQuery Mobile:按下back btn时清除页面,javascript,android,html,jquery-mobile,Javascript,Android,Html,Jquery Mobile,我正在开发一个混合应用程序,它有很多“顺序”页面(例如:主页->第1页->第2页->第3页)。所有这些页面都在标题中设置了data add back btn=true,并通过AJAX加载数据。问题是,当我按下后退按钮时,我希望清除页面内容,因为当我再次进入该页面时,它将显示以前的数据,直到加载新数据。。我试过: $('#page_one').on('pagebeforechange', function(){ //clear //reload ajax } 但是它在调用页面时是

我正在开发一个混合应用程序,它有很多“顺序”页面(例如:主页->第1页->第2页->第3页)。所有这些页面都在标题中设置了data add back btn=true,并通过AJAX加载数据。问题是,当我按下后退按钮时,我希望清除页面内容,因为当我再次进入该页面时,它将显示以前的数据,直到加载新数据。。我试过:

$('#page_one').on('pagebeforechange', function(){
    //clear
    //reload ajax
}
但是它在调用页面时是有效的,而且在我从第二页返回该页面时也是有效的。我想在Android中使用类似onDestroy()的东西。它存在吗


非常感谢。

您需要利用两个事件

  • 导航
    以确定用户是使用jQM后退按钮还是使用浏览器的后退按钮返回

    var direction = "";
    
    $(window).on("navigate", function (e, data) {
       direction = data.state.direction == "back" ? true : false;
    });
    
  • pagebeforechange
    (jQM=1.4)。无论是否使用“后退”按钮,此事件都将返回您正在导航的页面的对象
    .toPage
    。在他的阶段,您可以替换
    toPage
    的内容

    $(document).on("pagecontainerbeforechange", function (e, data) {
        if (direction && $.type(data.toPage) == "object") {
            /* do your magic here */
            $(".ui-content", data.toPage).append("<p>Back button was hit</p>");
            /* don't forget to reset direction var */
            direction = false;
        }
    });
    
    $(文档)。在(“PageContainerBeforChange”上,函数(e,数据){
    if(方向和$.type(data.toPage)=“对象”){
    /*在这里施展你的魔法*/
    $(“.ui content”,data.toPage).append(点击后退按钮);
    /*别忘了重置方向变量*/
    方向=假;
    }
    });
    

  • 在本例中,为什么事件会触发多次?我看到它每换一页就触发两次。这是正常行为吗?@Crungmungus
    pagebeforechange
    /
    pagecontainer在
    change触发两次之前,第一次返回字符串,第二次返回对象。和@Crungmungus使用一个事件的另一个解决方案: