目前我在 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
是否已定义(以及值是什么 - 1
、1
和 0
- 我分别需要它们)?
我在想 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/