noq*_*ser 17 jquery jquery-mobile
我正在尝试将一些参数传递给jQuery Mobile中的page-id.
该站点由带链接的列表视图组成,每个链接都有编码的哈希值,如下所示:
<li><a href="#pronostico?region=12&ciudad=0">Puerto Natales</a></li>
Run Code Online (Sandbox Code Playgroud)
我已经绑定pagebeforechange以捕获URL中的哈希值,执行参数检测并根据传递的参数量采取措施.
现在,有了cookies,我一直在尝试这个:
$(document).one("pageinit", function(event, data) {
if (location.hash.search(/^(#ciudades|#pronostico)/) === -1) {
if ($.cookie("recordar")) {
$.mobile.changePage($("#pronostico"), {
data: "region=" + $.cookie("region") + "&ciudad=" + $.cookie("ciudad")
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
但它只是将我传递给#pronosticopage-id,哈希中没有参数.结果,我得到一个没有它应该显示的信息的页面.
提前致谢.
Leo*_*eon 31
是的,默认情况下不支持散列上的参数.我一直在使用以下插件给我这个,到目前为止它一直很好用;-)
更新 - 如何使用:
在包含jqm.page.params.js之后我添加了以下代码:
$(document).bind("pagebeforechange", function( event, data ) {
$.mobile.pageData = (data && data.options && data.options.pageData)
? data.options.pageData
: null;
});
Run Code Online (Sandbox Code Playgroud)
例如,一个被调用的页面如:index.html #search?id = mysearchkeyword现在可以在任何页面事件中访问此信息,我觉得:
$(document).on("pagebeforeshow", "#firstpage", function(e, data){
if ($.mobile.pageData && $.mobile.pageData.id){
console.log("Parameter id=" + $.mobile.pageData.id);
}
});
Run Code Online (Sandbox Code Playgroud)
将"mysearchkeyword"打印到您的日志记录控制台.
希望这可以帮助!
PS:请注意,我与插件或其作者没有任何关系
编者注:作者将此作为第二个代码块.在Jquery 1.9中,live被删除,所以我用.on语法更新了上面的示例.这是原作:
$("#firstpage").live("pagebeforeshow", function(e, data){
if ($.mobile.pageData && $.mobile.pageData.id){
console.log("Parameter id=" + $.mobile.pageData.id);
}
});
Run Code Online (Sandbox Code Playgroud)