如何在jQuery BBQ插件中使用没有值的参数?
我需要定义和读取散列值,如如何在jQuery BBQ插件中使用没有值的参数?,jquery,jquery-bbq,Jquery,Jquery Bbq,我需要定义和读取散列值,如 #page1&filter=1-1-0 #filter=1-1-0 (if page number is omitted) #page1 (if filter is not defined) 也就是说,页码将是参数的一部分,并且没有值。 如何使用(获取和设置)这些参数?您可以使用window.location.hash访问URL中散列后的字符串内容 然后需要进行一点解析,以获得键值对。类似下面的代码: function getParameters(){
#page1&filter=1-1-0
#filter=1-1-0 (if page number is omitted)
#page1 (if filter is not defined)
也就是说,页码将是参数的一部分,并且没有值。
如何使用(获取和设置)这些参数?您可以使用
window.location.hash
访问URL中散列后的字符串内容
然后需要进行一点解析,以获得键值对。类似下面的代码:
function getParameters(){
params = {}
var keyValuePairs = window.location.hash.substr(1).split('&');
for (x in keyValuePairs){
var split = keyValuePairs[x].split('=', 2);
params[split[0]] = (split[1]) ? decodeURI(split[1]) : "";
}
return params;
}
function setParameters(key, value){
var params = getParameters();
params[key] = value;
var hashString = ""
for (x in params){
if (params[x]){
hashString += "&" + x + "=" + encodeURI(params[x]);
} else {
hashString += "&" + x;
}
}
window.location.hash = hashString.substr(1);
}
您可以通过以下方式读取“过滤器”参数:
var parameters = getParameters();
console.log(parameters.filter);
以下是BBQ插件用法()的解决方案:
谢谢,赞美。有什么方法可以简化jQuery BBQ插件的相同功能吗?;)另外,我不喜欢您的方法—如果未定义页面,则哈希看起来像
#&filter=1-1-326
—理想情况下,不应该有&
符号。能修好吗?
var hash = $.deparam.fragment();
var page = 'page1';
$.each(hash, function(i, val) {
if (i.indexOf('page') != -1) page = i;
});
var filter = (hash.filter==undefined) ? '0-0-0' : hash.filter;
// update hash
$.bbq.pushState('#' + page + '&filter=' + filter);