关于jquery mobile的页面跳转

最近做到手机web页面,所以用到了jquerymobile需要页面的跳转并传递参数,但是如果传递参数的话添加data-ajax=“false”才能执行我的js页面跳转效果... 最近做到手机web页面,所以用到了jquery mobile 需要页面的跳转并传递参数,但是如果传递参数的话添加 data-ajax=“false”才能执行我的js 页面跳转效果就消息了 展开
 我来答
暗夜de忧伤
2014-06-28 · TA获得超过1936个赞
知道小有建树答主
回答量:995
采纳率:75%
帮助的人:968万
展开全部

jm转场传参确实是奇葩的东西,首先你要理解:如果采用changePage转场,那么只需要第一个html引入Javascript,也就是说所有页面的Javascript是共享的。


那么一个解决方案是:你在page1.html通过changePage转场到page2.html之前,在Javascript中定义一个公共常量,这个常量就是要给page2.html的参数。然后跳转到page2.html的时候通过pageinit事件去获取常量。

var params1 = xxx;
$(document).on("pageinit","#page2",function(){  
  params1.... 
});

上面这是最简单但不安全合理的解决方法。


你说的禁用转场也可行,但是第二个页面就是全新页面了,不仅没转场效果,而且得重新加载所有文件,性能不行。


传说中最优的方案是绑定pagebeforechange事件,$(document).bind("pagebeforechange", handleChangePage),这个事件能在page1跳转后、page2初始化前触发,并且通过e.target.baseURI可以获取URL信息,剩下就是解析参数,很简单了。

$(document).bind("pagebeforechange", beforechange);
function beforechange(e, data) {
if (typeof data.toPage != "string") {
var url = $.mobile.path.parseUrl(e.target.baseURI)
var re = 'details.html';
if (url.href.search(re) != -1) {
var page = $(e.target).find("#detailsPage");
var d = data.options.data;
var data = getUrlParam(url.href);
page.find("#nameDiv").html(decodeURIComponent(data[0]));
page.find("#timeDiv").html(decodeURIComponent(data[1]));
page.find("#contentDiv").html(decodeURIComponent(data[2]));


}
}
}

可能你还有一些疑惑,这没问题,你可以去百度搜索"JqueryMobile转场和参数传递“,现在已经有很多文章介绍了。


最后吐槽一下:JqueryMobile在Android下真的跑不快!但是适合不懂移动开发,只会web开发的同学入门。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式