javascript - 如何使用多个哈希?

标签 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)

如何解析它? 即如何理解 page 是否已定义,filter 是否已定义(以及值是什么 - 110 - 我分别需要它们)?

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

最佳答案

两个硬编码变量的非常简单且不可扩展的解析器:

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) 更改为哈希即可。

关于javascript - 如何使用多个哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019149/

相关文章:

javascript - 我怎样才能缩短这个 jQuery 代码?

javascript - 页面重新加载后在 JavaScript 中保存变量

javascript - 如何使用 jquery 和 css 在固定标题导航栏中将头像图像调整为较小的图像

javascript - 在将 Squire.js 与 RequireJS 和 Mocha 一起使用时,如何避免引入全局泄漏?

javascript - 根据特定条件创建对象

javascript - Tablesorter Filter 小部件在所有浏览器上更新后停止工作,没有错误消息

jQuery 基于哈希的导航与 jquery-bbq 使页面跳转

javascript - 今天(2011 年)我应该使用哪个 JavaScript hashchange/history 库?

javascript - 使用 onhashchange 或 jquery 控制后退按钮

javascript - 选择多个包含文本的容器并 trim 前 150 个字符