我正在使用jqm + phonegap开发一款应用。假设我有两个页面,在第二页上我设置了一些参数(光,恢复等使用选择菜单)。在页面1我有一个滑块,当我移动滑块时,它将调用函数timeCalculation()来计算时间并显示在page1(移动滑块时实时更改结果)。 现在,我想要的是第一次我在第2页上设置所有参数并返回到第1页并执行计算(工作正常)。现在,如果我更改第2页上的某个参数,我希望滑块自动刷新并显示新结果(我仍然在第2页,所以当我回到第1页时,我应该看到新的结果)。问题是我无法这样做,只有当我点击第1页上的滑块时,它才会更新值。 所以,我知道如何解决这个问题,我试图在每次更改第2页上的某个参数时调用timeCalculation()。 现在,当我按下第2页上的后退按钮转到第1页时,我想触发像这样的pagebeforeshow
$("#firstpage").live("pagebeforeshow", function (event, ui) {
alert("test");
if(i!=null && e!=null && f!=null && o!=null && r!=null){
timeCalculation() //calling this function to calculate time.
}});
function timeCalculation(){
// alert("inside");
string=light;
str=string.split(" ").join("");
str1=selCom.split(" ").join("");
str2=shade.split(" ").join("");
// alert("test2");
$.getJSON("appData.json",function(results){
i=results[str][dis];
r=results.Restoration[res];
o=results.Expertise[op];
f=results.Increment[inc];
lightColor=results[str].color;
compColor=results[str1].color;
e=results[str1][str2];
});
finalResult=1000*(e/i)/(f*o*r);
document.getElementById("result").value=finalResult.toFixed(2);
}
现在,当我点击第2页的后退按钮时,提示(“测试”);语句已执行但它不会转到page1。我的应用程序挂了。请帮忙。
答案 0 :(得分:1)
简单回答:文档中的第一页没有pagebeforeshow。
我的'home'页面上的pagebeforeshow也出现问题,直到我意识到此事件不会触发文档中的第一页。查看jQM文档http://jquerymobile.com/demos/1.1.0/docs/api/events.html:Pagebeforeshow事件由pagechange方法触发。该方法不适用于显示的第一页。
有一种解决方法,在pagehide事件的下方描述:
此外,要在初始页面加载期间调用这些处理程序,必须在jQuery Mobile执行之前绑定它们。这可以在mobileinit处理程序中完成,如全局配置页面中所述。