5

我想使用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>

加载此页面后,单击“先单击我”链接;然后在地址栏中我看到附加到原始 URL 的“#test”。但是,如果我然后单击“然后单击我”div,我会看到一个空警报。似乎哈希没有“更新”。

我将不胜感激任何帮助。

4

4 回答 4

6

尝试将哈希调用移动到函数内部,以便在每次调用单击时调用它。按照您的方式,它仅在页面的初始加载时加载。

$(function(){
    $("#clickme").click(function(){
        var p=window.location.hash;
        alert(p)
    });
});
于 2011-10-24T19:18:40.803 回答
2

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

<script type="text/javascript">
    $(function(){
        $("#clickme").click(function(){
            var p=window.location.hash;
            alert(p)
        });
    });
</script>
于 2011-10-24T19:20:23.143 回答
0

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

这里的赋值语句

var p=window.location.hash;

仅在页面加载时执行一次。所以在加载的时候 P 的值是空的,并且永远是空的。

代替

alert(p)

尝试

alert(window.location.hash)

或在点击回调中移动分配。即在警报声明之上

于 2011-10-24T19:30:47.363 回答
0

您的#clickmediv 函数从不尝试更新哈希。如果您希望您的代码更新哈希,则必须像这样操作它:

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

    //Remaining Code
});
于 2011-10-24T19:19:56.787 回答