我想使用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,我会看到一个空警报。好像哈希不是'更新'。
我非常感谢你提供任何帮助。
答案 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)
或在点击回调中移动作业。即在警告声明之上