Jquery哈希导航

时间:2012-05-10 11:04:30

标签: jquery hash

我有一个简单的javascript函数来获取哈希变量:

$(document).ready(function(){
    $("a").click(function(){
        nav_anchor()
    });
    function nav_anchor() {
        var aurl = location.hash;
        aurl = aurl.split('#');
        if (aurl[1]) { alert(aurl[1]); }
        else { alert("Empty");  }
    }
}); 
<a href="#a=1&aa=10">11111111111</a>
<a href="#b=1&bb=10">22222222222222</a>
<a href="#c=1&cc=10">333333333</a>

但如果我点击链接,我会收到之前的变种

示例:

如果我的第一次点击是11111,我会收到消息Empty,如果我的第二次点击是222222,我会收到a=1&aa=10

2 个答案:

答案 0 :(得分:5)

http://jsbin.com/uxitoy/2/edit

$(document).ready(function(){
    $("a").click(function(){
        nav_anchor(this);
    });
    function nav_anchor(o) {
        var aurl = o.hash;
        aurl = aurl.split('#');
        if (aurl[1].length>0) { alert(aurl[1]); }
        else { alert("Empty");  }
    }
}); 

答案 1 :(得分:2)

这是因为在将哈希片段附加到URL之前,会触发click事件。而不是从URL获取哈希,而是从链接获取它:

$("a").click(function(){
    nav_anchor(this)
});

function nav_anchor(el) {
    var aurl = el.href;
    aurl = aurl.split('#');
    if (aurl[1]) { alert(aurl[1]); }
    else { alert("Empty");  }
}

如果您想在页面加载时获取变量,则需要使用location.hash从URL中读取变量。

Example fiddle