声明后可以设置项目的类吗?

时间:2013-04-06 10:39:29

标签: html css

我想将我网站上所有页面共有的所有菜单项都放在一个头文件中。问题在于我需要为当前菜单项定义一个类,以便它改变颜色。我使用superfish作为菜单,这是一个非常简单的模型...

<nav> 
  <ul class="sf-menu">
     <li id="first-li"><a href="index.php">Home</a></li>
      <li class="current"><a href="page1.php">Page 1</a>
         <ul>
             <li><a href="submenu1.php">Submenu 1</a> </li>
             <li><a href="submenu2.php">Submenu 2</a> 
                 <ul>
                 <li><a href="subsubmenu1.php">SUBSubmenu 1</a> </li>
                 </ul>
             </li>
          </ul>

      </li>
      <li><a href="page2.php">Page 2</a> </li>
       <li><a href="page3.php">Page 3</a></li> 
       <li><a href="page4.php">Page 4</a></li>
   </ul>
 </nav>

是否可以删除class =“current”,将整个nav移动到头文件,然后只在每个页面上指定当前类?

我的实际菜单代码要大得多,这就是为什么我不想在每一页上重复它。

4 个答案:

答案 0 :(得分:0)

在当前页面脚本中使用它

使用jquery ...

$('.sf-menu li a').click(function() {
        $('.sf-menu li.current').removeClass('current');
        $(this).closest('li').addClass('current');
    });

在这里找到小提琴.. http://jsfiddle.net/VudYx/

答案 1 :(得分:0)

将class =“current”添加到标头中的index.php li,并在标题中使用以下jQuery代码。

$(document).ready(function() {
var curUrl = window.location.pathname;
curUrl=curUrl.replace(/\/$/, "");//support urls with or without trailing slash
$( ".sf-menu li" ).each(function(i) {

if(($(this).children().length > 0) && ($(this).children(":first").attr("href").split('/').pop()==curUrl.split('/').pop()))
{
$( ".sf-menu li" ).removeClass("current");
$(this).addClass("current");
}

});  
})

答案 2 :(得分:0)

就我个人而言,我会使用CSS实现这一目标。

如果每个菜单项<li>都有自己的类,并且您的<body>每页都有唯一的ID,则可以适当设置当前项的样式,以便:

<li class="navHome">Home</li>
<li class="navAbout">About<li>

并且您的home / about页面有一个body标记,以便: <body id="pgHome"><body id="pgAbout">

然后你可以直接设置当前页面菜单项的样式:

#pgHome .navHome,
#pgAbout .navAbout
{
 // styles to highlight this item
}

答案 3 :(得分:0)

通过结合所有答案,我得到了我想要的工作。

首先我给所有第一层菜单项ID id,我想要突出显示的那些,然后在每个页面上我移动当前类... ...

<script>
$(document).ready(function() {
$( ".sf-menu li" ).removeClass("current");
$( "#menu2" ).addClass("current");  
}); 
</script>

干净,简单,无需点击即可工作,感谢所有回答你帮助的人。