LA_
LA_

Reputation: 20409

How to use multiple hashes?

Currently I use page numbers in hashes with Ben's 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.

Now I need to add there one more value - filter. I think result hash URL can look like

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

How to parse that? I.e. how to understand if page is defined, if filter is defined (and what are the values - 1, 1 and 0 - I need them separately)?

I was thinking about Ben's Alman BBQ plugin, but (1) it looks too complicated for such simple task, (2) not sure how to use parameters (page1, page2 etc.) without values.

Upvotes: 3

Views: 7406

Answers (1)

Oroboros102
Oroboros102

Reputation: 2254

Very simple and unextediable parser for two hardcoded variables:

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

You can easily make it universal.

Please, also take a look here: Parse query string in JavaScript - just change window.location.search.substring(1) to hash.

Upvotes: 5

Related Questions