正如jQuery Mobile Docs中提到的,jQuery Mobile 不支持将查询参数传递给内部/嵌入式页面,但是您可以将两个插件添加到您的项目中以支持此功能。有一个轻量级页面参数插件和一个功能更全面的jQuery Mobile 路由器插件,可与主干.js 或脊柱.js 一起使用。
还有其他方法可以实现不同页面之间的数据传递,但其中一些方法可能不受旧 Web 浏览器的支持。您必须仔细选择您的实现方式,以免对应用程序在多个浏览器上的互操作性产生影响。
您可以使用Web Storage在不同页面之间传递数据。
正如W3schools网站中提到的,HTML5 网页可以在用户浏览器中本地存储数据。早些时候,这是通过 cookie 完成的。但是,Web 存储更安全、更快速。数据不包含在每个服务器请求中,但仅在请求时使用。也可以在不影响网站性能的情况下存储大量数据。数据以键/值对的形式存储,网页只能访问自己存储的数据。Internet Explorer 8+、Firefox、Opera、Chrome 和 Safari支持 Web 存储。Internet Explorer 7及更早版本,不支持网络存储。
有两个对象用于在客户端存储数据:
- localStorage 存储没有过期日期的数据
- sessionStorage 存储一个会话的数据
例子:
本地存储示例:
在第 1 页:localStorage.carType="test";
在 Page2 中,您可以使用以下命令检索汽车类型:localStorage.carType
会话存储示例:
第1页:sessionStorage.carNumber=10;
在 Page2 中,您可以使用以下方法检索 carType: sessionStorage.carNumber
关于您的情况,一种可能的解决方案是在每个锚点中添加 id。然后捕捉点击事件,获取id,将id保存在网络存储中,进行页面转换。在下一页中,从 Web 存储中检索 id。您可以在下面找到实现:
<ul id="menu_list" data-role="listview" data-theme="a">
<li><a id="1" href="#">Martin</a></li>
<li><a id="2" href="#">Johnny</a></li>
<li><a id="3" href="#">Luke</a></li>
</ul>
$('#menu_list').children().each(function(){
var anchor = $(this).find('a');
if(anchor)
{
anchor.click(function(){
// save the selected id to the session storage and retrieve it in the next page
sessionStorage.selectedId=anchor.attr('id');
// perform the transition
changePage();
});
}
});
编辑:
遵循多页方法时传递参数的替代方法
此示例使用jQM changePage()
Ajax 页面请求发送数据。
$('#list-d a').on('click', function(e) {
e.preventDefault();
$.mobile.changePage('car-details.html', {
data: {
id: this.id
}
});
});
构造的 URL 是 .../car-details.html?id=my-id
有关完整示例,请查看此StackOverflow 答案
我希望这可以帮助你。