在我的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无法正常加载,我可以看到视觉加载的页面确定,但是在firebug上我看到标签内部的一些必要的javascripts不再打,它从来没有在menu.html上的任何地方点击任何javascripts再也只是从缓存中加载以前的html。此外,menu.html的页面标题没有正确更改,并在该点之后保持为“帮助”。
我的完整menu.html看起来像这样;
有什么想法吗?
答案 0 :(得分:2)
这是一个疯狂的猜测,但根据您的代码,这是一种正常的行为。
jQuery Moible事件pageinit将在初始页面加载期间仅触发一次,除非刷新页面(手动,使用rel =“external”或在您的情况下为reloadPage =“true”),它将永远不会再次触发。
如果您希望每次访问页面时再次执行javascript,请改用pagebeforeshow事件。如您的示例所示,删除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');
});
答案 1 :(得分: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
});
});