2013-04-05 109 views
2

在我的jQuery Mobile的应用程序;jQuery的后退按钮不能正常更新工作后,

在menu.html和体内我做了这样的事情去help.html;

.... 

$(document).off('pageinit', '#menupage').on('pageinit', '#menupage', function() { 

    $(document).off('click', '#help').on('click', '#help', function(){ 
      $.mobile.changePage("help.html", { 
       reloadPage: true, 
       transition: "flip", 
       reverse: false 
      }); 
     }); 
} 

.... 

<li><a id="help" href="#" role="link" data-role="none"> 
         <div class="img help"></div> 
         <div class="menuTitle langMenuItem3">Help</div> 
         <div class="arrow"></div> 
</a></li> 

然后help.html页面上我有这样的后退按钮返回到menu.html:

<header data-role="header"> 
    <a href="#" data-rel="back" class="button" data-role="none"> 
     <div class="arrow_reverse"></div><span class="langBack">Terug</span> 
    </a> 
    <div class="pageTitle">Over deze app</div> 
</header> 

我的问题是这样的工作在正常情况下,如果我使刷新menu.html,然后去help.html 然后回到菜单中再次,menu.html无法正确载入,我可以看到页面加载视觉确定,但萤火上我看到了一些必要标签内的javascripts不再命中,它从来没有击中过ny JavaScripts在menu.html的任何地方,只是从缓存中加载以前的html这就是所有。此外,menu.html的页面标题不会正确更改,并在该点之后保持为“帮助”。

我完全menu.html看起来像这样;

http://jsfiddle.net/M5CYZ/

任何想法?

+0

如果你回来,并进一步几次都没有刷新,你遇到的一样吗? – Omar 2013-04-05 13:53:04

+0

@Omar yes..but如果我对help.html问题进行刷新解决! – Spring 2013-04-05 14:04:02

+0

这很奇怪,问题出在menu.html中。你可以发布它的'标记?正在使用'data-dom-cache'或'data-prefetch'? – Omar 2013-04-05 14:15:40

回答

2

做这种方式。

还给按钮的ID

<a href="#" id="backbtn" class="button"> 
<div class="arrow_reverse"></div><span class="langBack">Terug</span> 
</a> 

然后添加以下代码help.html

$('#backbutton').off('click').on('click', function() { 
$.mobile.changePage("menu.html", { 
    reloadPage: true, 
    transition: "flip", 
    reverse: true 
}); 
}); 
+1

看起来你错过了'on()'的一个点('.')。 – Sparky 2013-06-07 14:58:19

+0

@Sparky谢谢,纠正:) – Omar 2013-06-07 15:00:50

2

这是胡乱猜测,但根据您的代码,这是一种正常的行为。

jQuery Moible事件pageinit只会在初始页面加载期间触发一次,除非页面被刷新(手动,rel =“external”或在您的情况下reloadPage =“true”),它将永远不会再次触发。

如果你想每次页面被访问,然后使用pagebeforeshow事件,而不是JavaScript来再次执行。正如您的示例所示,删除pageinit并将其添加回来不会对您有所帮助。

如果您想了解更多,请阅读页面事件我其他的答案/文章:jQuery Mobile: document ready vs page events

下面是一个例子来证明我的观点:http://jsfiddle.net/Gajotres/Q3Usv/

$(document).on('pageinit', '#index', function(){  
    alert('Pageinit'); 
}); 

$(document).on('pagebeforeshow', '#index', function(){  
    alert('Pagebeforeshow'); 
}); 
+0

tnx好信息,但没有帮助.. – Spring 2013-04-05 14:07:17

+0

另一个事情是,如果我在help.html刷新并回去然后问题解决..任何想法? – Spring 2013-04-05 14:08:13

+0

正如我所说我的代码工程很好,但是当我在menu.html上手动刷新时,那么这个问题发生 – Spring 2013-04-05 14:09:53