对于上述问题,我已经使用 jQuery 完成了代码箱的解决方案。
演示: http ://codebins.com/bin/4ldqpa4
在这里,我提到了执行上述解决方案的步骤。
1) 在 header 标签中包含最新的 jQuery.js 和 querystring-0.9.0.js javascript 文件。
2)HTML
<div id="panel">
<ul class="menu">
<li>
<a href="#?page=0">
Index
</a>
</li>
<li>
<a href="#?page=1">
About
</a>
</li>
<li>
<a href="#?page=2">
Test
</a>
<li>
</ul>
</div>
3)CSS
ul.menu{
border:1px solid #112266;
background:#ccc;
}
ul.menu li{
list-style:none;
display:inline-block;
margin-left:10px;
padding:0px;
width:60px;
text-align:center;
}
ul.menu li:hover{
background:#343434;
}
ul.menu li a{
padding:0px;
color:#113399;
text-decoration:none;
}
ul.menu li:hover a{
color:#c6b744;
text-decoration:underline;
}
ul.menu li.active{
background:#343434;
}
ul.menu li.active a{
color:#c6b744
}
4)jQuery:
$(function() {
$(".menu li").click(function() {
setTimeout(function() {
var page = $.QueryString("page");
$(".menu li").removeClass("active");
$(".menu li:eq(" + page + ")").addClass("active");
}, 200);
});
});
在上述解决方案中,我必须设置像 #?page= 这样的 href 链接,因为在 bin 上运行带有新页面重定向的 java 脚本是不可能的,而且我必须使用 setTimeout 函数,因为当前页面没有被重定向,只需更改其查询#?page= 在同一页上的字符串。
如果你想在你的项目中使用上述解决方案,那么将上面的 jQuery 脚本放在公共位置,以便它将在每个菜单链接上执行并将当前页面链接设置为活动类。
注意:删除 setTimeout 函数包装器,只需在其中保留代码行脚本。如下所示:
$(function() {
$(".menu li").click(function() {
var page = $.QueryString("page");
$(".menu li").removeClass("active");
$(".menu li:eq(" + page + ")").addClass("active");
});
});