我有一个简单的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
答案 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中读取变量。