我正在使用 jQuery Mobile,并且一个 HTML 页面中有几页。当打开这些页面时,我想为它们传递参数,以便它们的参数持久化在URL中。
例如
<a href="#map?x=4&y=2"
它将打开,我可以在 beforeshow 事件中访问参数 X 和 Y。
这可能吗?如何实现?您建议使用 hashbangs 编码参数的替代方法是什么?
最佳答案
我建议您不要使用哈希“参数”,因为当前对它的支持存在错误。
我会拦截所有链接上的点击并查找特定的数据元素,例如数据参数:
$('a').live('click',
function(e) {
var data = $(e.target).jqmData()
globalParams = data.params !== null ? data.params : null
}
)
在你的 HTML 中你可以去
<a href="#map" data-params="x=4&y=2">....</a>
在本例中,您将创建一个名为 params 的全局变量,您应该能够从所有代码中以统一的方式访问该变量。
你必须自己解析这些参数,但这并不难,可以使用这样的东西:
function getCurrentParams() {
if (!params) {
return null
}
var res = {}
$(params.split('&')).each(
function(i, e) {
var pair = e.split('=')
if (pair.length !== 2) {
return
}
res[pair[0]] = pair[1]
}
)
return res
}
关于jQuery Mobile 和 "query parameters"用于 hashbang 导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6629776/