如何使用多个哈希?

时间:2011-11-05 08:54:19

标签: javascript jquery jquery-bbq

目前,我使用Ben的Alman jquery-hashchange plugin哈希中的页码:

$(document).ready(function(){
    $(window).hashchange( function(){
      var hash = (location.hash) ? location.hash.slice(1) : 'page1';
      $.ajax({
          url: '/list/' + hash, // result url like page1, page2 etc.

现在我需要再添加一个值 - filter。 我认为结果哈希URL看起来像

#page1&filter=1-1-0 
#filter=1-1-0 (if page number is omitted)
#page1 (if filter is not defined)

如何解析? I.e.如何定义page是否定义,定义filter(以及值{ - 1}},11 - 我需要单独购买) ?

我在考虑Ben的Alman BBQ plugin,但是(1)对于这么简单的任务看起来太复杂了,(2)不确定如何使用没有值的参数(page1,page2等)。

1 个答案:

答案 0 :(得分:3)

两个硬编码变量的非常简单且无法解决的解析器:

var hash_parts = location.hash.split('&', 2); //2 - limit, may be changed if more than two arguments

for(i in hash_parts) {
    if(hash_parts[i].indexOf("page") === 0) { //begins with "page"
        var current_page_number = hash_parts[i].substr(4);
    }
    else if(hash_parts[i].indexOf("filter") === 0) { //begins with "filter"
        var filter = hash_parts[i].split('=', 2);
        var filer_values = filter[1].split('-'); //filter_values == {'1', '1', '0'}
    }
}

您可以轻松地将其普及。

请详细说明:Parse query string in JavaScript - 只需将window.location.search.substring(1)更改为哈希。