JQM后退按钮丢失了上一页的数据

时间:2013-05-09 17:38:55

标签: jquery jquery-mobile jquery-mobile-button

我遇到了Jquery移动和后退按钮功能的问题。

我有一个页面,在显示时在远程服务器上运行ajax请求。 Ajax是通过pagebeforeshow事件启动的。这个事件通过[data-role =“page”]属性附加到div,因为我正在使用多个html文件:

 <div data-role="page" data-theme="b" id="Favorites">
   <div data-role="content" data-theme="b">
    <div id="Ajax">
            DISPLAY AJAX RESULT CONTAINING LINK TO OTHER HTML PAGE
        </div>
    </div>
 </div>

这是javascript:

$('#Favorites').on('pagebeforeshow', function(event) {
   LaunchAjax();   
});     

第一次显示页面时,此功能正常。 但是,ajax结果包含指向用户可以遵循的另一个页面的链接。 当用户按照链接时,我会显示一个后退按钮(使用jquery mobile生成),以便他返回包含ajax结果的intiale页面。

但是,单击后退按钮时,将显示initiale页面但为空白。 我希望得到ajax生成的最后结果,或者至少是重新启动ajax函数以显示initiale结果的方法。

我尝试过使用JQM缓存:

 $.mobile.page.prototype.options.domCache = true;

但是这并没有解决我的问题,并且DOM元素看起来没有正确缓存(可能是因为我使用的是单独的html文件)

我已经在Chrome桌面和Android上使用phonegap测试我的应用程序,这两个问题都存在。

有没有人有正确的方法来做到这一点?

非常感谢

最诚挚的问候。

1 个答案:

答案 0 :(得分:1)

您使用的页面事件绑定方式不正确。成功绑定页面事件的唯一方法是通过委托绑定。

所以代替这段代码:

$('#Favorites').on('pagebeforeshow', function(event) {
    LaunchAjax();   
});

使用此:

$(documents).on('pagebeforeshow', '#Favorites',function(event) {
    LaunchAjax();   
});