如何使用jQuery根据哈希值触发不同的哈希函数
How to trigger different functions on hash change based on hash value with jQuery?
我正在使用Ben Alman的jQuery
hashChange
事件插件。散列部分如下所示:
#x=1&y=2&z=3
我已经有了解析它的函数getHashPart(key)
和setHashPart(key)
。
我想要一个函数,它只允许注册哈希的特定部分的更改。我会这样使用它(我想…):
$(window).hashchange('x',function(new_value_of_x) {do something x related;});
$(window).hashchange('y',function(new_value_of_y) {do something y related;});
如何在jQuery中注册这样的函数?是否存在类似的情况?
谢谢!
您可以有一个函数来响应所有的hashchange事件(最好保持hashchange插件的使用),然后重定向到如下的单独处理程序:
var hashParameters = {};
$(window).bind("hashchange",function(event) {
//if you're using the awesome hashchange plugin
//$(window).hashchange(function(event) { ...
var newParameters = getParameters(event.target.location.hash.substring(1));
$.each(newParameters, function(key, value) {
if(hashParameters[key] !== value) $(window).trigger(key + "-change");
hashParameters[key] = value;
});
});
$(window).bind("andsome-change", function() {
alert("hi!");
});
function getParameters(paramString) {
//taken from http://stackoverflow.com/questions/4197591/parsing-url-hash-fragment-identifier-with-javascript/4198132#4198132
var params = {};
var e, a = /'+/g, r = /([^&;=]+)=?([^&;]*)/g,
d = function (s) { return decodeURIComponent(s.replace(a, " ")); };
while (e = r.exec(paramString))
params[d(e[1])] = d(e[2]);
return params;
}
window.location.hash = "some=value&andsome=othervalue";
我在这里有一个工作演示(现在有了hashchange插件,请参阅第一条评论)。
相关文章:
- 使用director.js执行基于哈希的函数
- 将哈希从URL传递到具有延迟的函数
- Emberjs :哈希中的函数原型
- coffeescript/backline.js:编写一个对字符串进行操作的哈希函数
- 文件的同步哈希函数
- Javascript 函数返回“[对象对象]”而不是哈希
- 在 JavaScript 中生成 Amazon API 签名,导入哈希函数 (jQuery)
- 字符串哈希函数,它将在JavaScript和PHP中产生相同的结果
- 使用指定的哈希函数解密哈希后的电子邮件地址
- 简单的哈希函数,对HTML id友好,区分大小写
- 什么's是PHP哈希函数的Node.js等价项(包括salt和原始输出)
- mongodb中的加密哈希函数
- 函数式编程对哈希函数的纯度要求
- javascript中的哈希函数
- 为抽认卡程序编写高效的哈希表和哈希函数
- 从c#到Javascript的哈希函数转换存在位数学问题
- 对象属性作为哈希函数中的键值对
- 谷歌地图-用javascript构建一个哈希表和完美的哈希函数
- 如何使用jQuery根据哈希值触发不同的哈希函数
- JavaScript的简单(非安全)哈希函数