Как использовать несколько хешей? - PullRequest
2 голосов
/ 05 ноября 2011

В настоящее время я использую номера страниц в хэше с плагином Бена Альмана jquery-hashchange :

$(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)

Как разобрать это? Т.е. как понять, если определено page, определено filter (и каковызначения - 1, 1 и 0 - они нужны мне отдельно)?

Я думал о плагине Бена Альмана BBQ , но (1) он выглядит слишком сложным длятакая простая задача, (2) не уверен, как использовать параметры (стр. 1, стр. 2 и т. д.) без значений.

1 Ответ

3 голосов
/ 05 ноября 2011

Очень простой и не подлежащий изменению синтаксический анализатор для двух жестко закодированных переменных:

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'}
    }
}

Вы можете легко сделать его универсальным.

Пожалуйста, также посмотрите здесь: Анализ строки запроса вJavaScript - просто измените window.location.search.substring(1) на хеш.

...