【问题标题】:make parent links display active class when sub menu link is selected选择子菜单链接时使父链接显示活动类
【发布时间】:2013-08-31 03:41:11
【问题描述】:

我有一个 CSS/HTML 菜单,当 li 类为 active 时,它显示为不同的颜色。

我的菜单链接存储在数据库中,所以我运行 SQL 查询来显示菜单链接。

我正在尝试这样做,如果用户在子菜单页面上,它将显示顶部链接(父顶部链接)为活动状态。

最好的方法是什么 - 我尝试在顶部链接上做一个 if 语句,但如果选择了子菜单链接,这不起作用

<div id="cssmenu">
<ul>
<li <?php if($_GET["id"] == '') { echo 'class="active"'; } ?>><a href="/home.php"><span>Homepage</span></a></li>
<?php
//select all the top row items
$sql="SELECT * from website_menu where parent_top = '' and parent = '' ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
{
    echo '<li';
    if($_GET["id"] == $result["link"])
    {
        echo ' class="active"';
    }
    echo '><a href="/'.$result["link"].'"><span>'.$result["title"].'</span></a>';
    //then select all the next rows down (parent_top)
    $sql2="SELECT * from website_menu where parent_top = '".$result["sequence"]."' ";
    $rs2=mysql_query($sql2,$conn) or die(mysql_error());
    if(mysql_num_rows($rs2) > 0)
    {
        echo '<ul>';
        while($result2=mysql_fetch_array($rs2))
        {
            echo '<li><a href="/'.$result2["link"].'"><span>'.$result2["title"].'</span></a>';
            //
            $sql3="SELECT * from website_menu where parent = '".$result2["sequence"]."' ";
            $rs3=mysql_query($sql3,$conn) or die(mysql_error());
            if(mysql_num_rows($rs3) > 0)
            {
                echo '<ul>';
                while($result3=mysql_fetch_array($rs3))
                {
                    echo '<li><a href="/'.$result3["link"].'"><span>'.$result3["title"].'</span></a></li>';
                }
                echo '</ul>';
                echo '</li>';
            }
            else
            {
                echo '</li>';
            }
        }
        echo '</ul>';
        echo '</li>';
    }
    else
    {
        echo '</li>';
    }
}
?>
</ul>

【问题讨论】:

    标签: php html css


    【解决方案1】:

    首先创建一个变量来查看菜单项是否被选中,并将其设置为false。在开始时在其主菜单循环中将其设置为 false。然后在将菜单项打印到屏幕上循环子菜单项之前,使用子菜单创建一个字符串并检查其中一个是否在当前页面上。如果一个是当前页面,则将所选变量设置为 true。在子菜单循环之后,如果菜单项应该有一个附加类,您将有一个变量保存,并且您可以使用子菜单创建项目。

    编辑

    <div id="cssmenu">
      <ul>
       <li <?php if($_GET["id"] == '') { echo 'class="active"'; } ?>><a href="/home.php><span>Homepage</span></a></li>
    <?php
    //select all the top row items
    $sql="SELECT * from website_menu where parent_top = '' and parent = '' ";
    $rs=mysql_query($sql,$conn) or die(mysql_error());
    while($result=mysql_fetch_array($rs))
    {
      //then select all the next rows down (parent_top)
      $current = false;
      $subMenu = '';
      $sql2="SELECT * from website_menu where parent_top = '".$result["sequence"]."' ";
      $rs2=mysql_query($sql2,$conn) or die(mysql_error());
      if(mysql_num_rows($rs2) > 0)
      {
        $subMenu = '<ul>';
        while($result2=mysql_fetch_array($rs2))
        {
            if($page == $currentPage)
            {
                $current = true;
            }
            $subMenu .= '<li><a href="/'.$result2["link"].'"><span>'.$result2["title"].'</span></a>';
            //
            $sql3="SELECT * from website_menu where parent = '".$result2["sequence"]."' ";
            $rs3=mysql_query($sql3,$conn) or die(mysql_error());
            if(mysql_num_rows($rs3) > 0)
            {
                $subMenu .='<ul>';
                while($result3=mysql_fetch_array($rs3))
                {
                    $subMenu .='<li><a href="/'.$result3["link"].'"><span>'.$result3["title"].'</span></a></li>';
                }
                $subMenu .='</ul>';
                $subMenu .='</li>';
            }
            else
            {
                $subMenu .='</li>';
            }
        }
        $subMenu .= '</ul>';
    }
        echo '<li';
    if($_GET["id"] == $result["link"] || $current)
    {
        echo ' class="active"';
    }
    echo '><a href="/'.$result["link"].'"><span>'.$result["title"].'</span></a>', $subMenu, '</li>';
     }
    ?>
     </ul>
    

    【讨论】:

    • 嗯好吧 - 我有点明白...你有机会做一个简单的例子吗?
    • 只是一个小sn-p来说明这个想法
    • $page 和 $currentPage 变量从何而来?
    • 还有,这是让所有的
    • 元素都有一个active类吗?
  • 变量 $page 和 $currentPage 只是我编造的,$page 是链接指向的页面,$currentPage 是用户所在的页面。我实际上没有设置任何东西。这也是所有礼都活跃的原因。看看你的代码,我会说 $currentPage 是 $_GET['id'] 而 $page 是 $result["link"]
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签