在jQuery中使用window.location.hash

时间:2011-10-24 19:14:20

标签: jquery hash window.location

我想使用jQuery创建一个颜色渐变的导航菜单,其中与当前页面对应的“按下”按钮的行为与“未按下”按钮的行为不同(具体来说,它在悬停时不会淡化为不同的颜色)。如果我查看www.guitaracademy.nl上的示例,我看到他们使用带有window.location.hash属性的本机javascript。

但是,我似乎无法将此哈希变为jQuery。这是一个示例脚本:

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var p=window.location.hash;
    $("#clickme").click(function(){
        alert(p)
    });
});
</script>
</head>
<body>
<a href="#test">Click me first</a>
<div id="clickme">Then click me</div>
</body>
</html>

加载此页面后,我点击“先点击我”链接;然后在地址栏中,我看到原始网址附加了“#test”。但是,如果我然后单击“然后单击我”div,我会看到一个空警报。好像哈希不是'更新'。

我非常感谢你提供任何帮助。

4 个答案:

答案 0 :(得分:6)

尝试将哈希调用移到函数内部,以便每次调用单击时调用它。你拥有它的方式,只是在页面的初始加载时加载。

$(function(){
    $("#clickme").click(function(){
        var p=window.location.hash;
        alert(p)
    });
});

答案 1 :(得分:2)

尝试将var p=window.location.hash;放入点击监听器中:

<script type="text/javascript">
    $(function(){
        $("#clickme").click(function(){
            var p=window.location.hash;
            alert(p)
        });
    });
</script>

答案 2 :(得分:0)

#clickme div的函数从不尝试更新哈希值。如果您希望代码更新哈希值,则必须按照以下方式操作它:

$("#clickme").click(function(){
    window.location.hash='#secondclick';

    //Remaining Code
});

答案 3 :(得分:0)

哈希值正在上升,但在这种情况下变量“p”没有得到更新。

这里是赋值语句

var p=window.location.hash;
加载页面时,

仅执行一次。所以在加载时P的值是空的,并且它总是为空。

而不是

alert(p)

alert(window.location.hash)

或在点击回调中移动作业。即在警告声明之上