我正在尝试使用JavaScript来突出显示当前页面。我有一个主菜单和页面上的子菜单。我希望突出显示的主菜单看起来与子菜单不同。这是我想出的将css类应用到当前页面的JavaScript。如何让JavaScript区分这两个不同的类?
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
$(function(){
$('a').each(function() {
if ($(this).prop('href') == window.location.href) {
$(this).addClass('main_current');
}
});
});
</script>
<script>
$(function(){
$('a').each(function() {
if ($(this).prop('href') == window.location.href) {
$(this).addClass('sub_current');
}
});
});
</script>
答案 0 :(得分:1)
这实际上取决于您要使用的页面/代码结构。我通常不会检查window.location
,而是在页面正文中设置rel
属性。在主页上,正文将rel="home"
,在其他页面上rel='other-page
等等。
通过这种方式,您可以检查正文的rel
属性,并根据该属性更改菜单/子菜单的状态。
(function(){
var currentLocation = $('body').attr('rel');
switch(currentLocation){
case 'home':
//add class to the home link
break;
case 'other-page':
//add class to the other link
break;
}
})();
答案 1 :(得分:0)
当您遍历子菜单并使用“sub_current”覆盖某些属性时,更好地指定选择器。 EG:
如果你有
<ul id="menu">
<li><a href="thisPage.com">ThisMenu</a>
<ul id="sub-menu">
<li><a href="thisPage.com">ThisSubMenu</a></li>
</ul>
</li>
</ul>
您可以使用$('#sub-menu a')
指定。
我希望它有所帮助。
欢呼声
答案 2 :(得分:0)
下面的方法会做同样的事情
$(function() {
var url = document.location.href;
if (url.indexOf("about") > -1) {
$('#nav-bar ul li:contains("About")').addClass('sub_current');
}
else if (url.indexOf("index") > -1) {
$('#nav-bar ul li:contains("Home")').addClass('main_current');
}
else {
// do something else
}
});
注意::包含selctor区分大小写。