3

我有一个简单的 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>

但是,如果我单击链接,我会收到上一个 var。

例子:

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

4

2 回答 2

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");  }
    }
}); 
于 2012-05-10T11:08:20.240 回答
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.

示例小提琴

于 2012-05-10T11:08:07.810 回答