我正在玩jQuery Mobile并遇到一些(对我而言)奇怪的行为。
我有一堆链接,每个链接都指向同一个jQM页面#otherpage
,但是URL查询字符串的值不同,例如#otherpage?q=foo
,#otherpage?q=bar
,等等。对其他页面的更改工作正常,但查询字符串在点击之间粘连,因此,如果我首先单击指向#otherpage?q=foo
的链接,然后返回到第一页,则所有后续页面更改为#otherpage
将无论当前点击的链接的href是什么,都有q=foo
。
jsFiddle似乎没有对jQM的支持所以我在这里举了一个例子:http://cpak.se/dump/location-search-test.html
我在Mac上的Chrome和Safari中试过这个。
我使用查询字符串在页面之间传递简单数据,因为我有其他代码连接到页面更改事件,这或多或少都不知道早期代码可能做了什么。如果我不能使这个工作,我将不得不找到另一种传递数据的方法......:P
干杯!
/克里斯托弗
答案 0 :(得分:4)
禁用jQm似乎是在浏览器中正确更新url参数的最简单方法。例如。在链接锚点中添加data-ajax="false"
而不使用$.mobile.changePage
。
<a href="#page?id=1" data-ajax="false">
在动态应用中,事先修改href的值。
答案 1 :(得分:3)
我一直在寻找这个问题,因为它确实有点奇怪。有一个未解决的问题:https://github.com/jquery/jquery-mobile/issues/2859
Atm jQuery Mobile建议不要使用查询参数:
我们目前不支持查询参数作为哈希的一部分 片段,虽然这是经常讨论的事情 在内部,位于功能请求列表中。
他们建议使用像:
这样的插件但是,有一个解决方法,因为DOM DOES中活动页面的data-url发生了变化,您可以使用$(".ui-page-active").attr("data-url");
检索此问题我已经在您的网站上对此进行了测试,它为我提供了所有3个唯一网址
答案 2 :(得分:0)
jQuery Mobile默认情况下不允许将查询字符串参数传递给内部链接的页面。查看本文档页面的最底部(页面底部的第二个项目符号):http://jquerymobile.com/demos/1.0rc3/docs/pages/page-navmodel.html
jQuery Mobile不支持传递查询参数 内部/嵌入页面,但您可以添加两个插件 您的项目是否支持此功能。有一个轻量级page params plugin和一个功能更全面的jQuery Mobile router plugin,可用于backbone.js或spine.js。