微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用jQuery基于哈希值触发哈希更改的不同功能?

如何解决如何使用jQuery基于哈希值触发哈希更改的不同功能?

| 我正在使用Ben Alman的
jQuery
hashChange
事件插件。 哈希部分如下所示:
#x=1&y=2&z=3
我已经有解析it3ѭ和
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插件,请参阅第一个评论)。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。