次のようなハッシュ値を定義して読み取る必要があります
#page1&filter=1-1-0
#filter=1-1-0 (if page number is omitted)
#page1 (if filter is not defined)
つまり、ページ番号はパラメータの一部であり、値はありません。そのようなパラメータをどのように操作(取得および設定)しますか?
次のようなハッシュ値を定義して読み取る必要があります
#page1&filter=1-1-0
#filter=1-1-0 (if page number is omitted)
#page1 (if filter is not defined)
つまり、ページ番号はパラメータの一部であり、値はありません。そのようなパラメータをどのように操作(取得および設定)しますか?
URLのハッシュの後の文字列の内容に。を使用してアクセスできますwindow.location.hash
。
次に、キーと値のペアを取得するために、少し解析する必要があります。以下のコードのようなもの:
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);
}
次のような「filter」パラメーターの読み取りを読み取ることができます。
var parameters = getParameters();
console.log(parameters.filter);
BBQ プラグインを使用したソリューション ( demo ) は次のとおりです。
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);