Javascript 包括php菜单,在单击时为链接分配活动类

Javascript 包括php菜单,在单击时为链接分配活动类,javascript,php,css,Javascript,Php,Css,PHP、CSS和JS扬声器!) 我在一个php文件中包含一个菜单。我需要它,因为它需要更少的时间来改变链接。但是,现在的任务是使用活动链接。当我点击一个链接,它应该采取积极的,以及父链接也应该采取积极的链接。 我是用PHP做的,它工作得很好,但是如果我继续,将会有很多PHP语句,它也可能会影响性能,并且对代码的可读性有不良影响。请查看以下代码(这只是一个片段),即菜单的1部分,而不是整个菜单) / 问:有什么方法可以用PHP或Java脚本或任何东西来处理它吗 提前

PHP、CSS和JS扬声器!) 我在一个php文件中包含一个菜单。我需要它,因为它需要更少的时间来改变链接。但是,现在的任务是使用活动链接。当我点击一个链接,它应该采取积极的,以及父链接也应该采取积极的链接。 我是用PHP做的,它工作得很好,但是如果我继续,将会有很多PHP语句,它也可能会影响性能,并且对代码的可读性有不良影响。请查看以下代码(这只是一个片段),即菜单的1部分,而不是整个菜单)


  • /
  • 问:有什么方法可以用PHP或Java脚本或任何东西来处理它吗


    提前谢谢你

    这是我使用jquery的示例。在您的例子中,您只需将活动类呈现到最后一个选中的子菜单,然后使用jquery将css规则应用于此节点的父级

    $('li')。单击(函数(){
    $(this).children('span:first child').addClass('active');
    $(this).parent('li span:first child').addClass('active');
    });
    
    li{
    宽度:100px;
    高度:40px;
    }
    .主动{
    背景色:#12323A;
    }
    李:悬停{
    光标:指针;
    }
    
    
    • 一级
    • 二级
      • 2.1级
      • 三级
        • 3.1级

    这是我使用jquery的示例。在您的例子中,您只需将活动类呈现到最后一个选中的子菜单,然后使用jquery将css规则应用于此节点的父级

    $('li')。单击(函数(){
    $(this).children('span:first child').addClass('active');
    $(this).parent('li span:first child').addClass('active');
    });
    
    li{
    宽度:100px;
    高度:40px;
    }
    .主动{
    背景色:#12323A;
    }
    李:悬停{
    光标:指针;
    }
    
    
    • 一级
    • 二级
      • 2.1级
      • 三级
        • 3.1级

    将所有菜单链接放在单个数组中:

    $menu = [
      [
        'title' => 'home',
        'url' => 'index.php',
      ],
      [
        'title' => 'Menu with dropdown',
        'key' => 'subs',
        'items' => [
           [
             'title' => 'Sub 1',
             'url' => 'page/sub1',
           ],
           [
              'title' => 'Sub 2',
              'url' => 'page/sub2',
           ],
           ...
        ],
        ...
      ]
    ]
    
    现在使用递归函数运行
    $menu
    并生成菜单结构:

    showMenu($menu);
    
    function showMenu(&$menu, $level = 0) {
        foreach ($menu as $item) {
    
           $class = getItemClass($item, $level).' '.(isActive($item['key'], $level) ? ' active' : '');
    
           if (isset($item['items'])) {
               echo "<ul>";
               echo "<li class='{$class}'>";
               showMenu($item, $level + 1);
               echo "</li>";
               echo "</ul>";
           } else {
               echo "<li class='{$class}'><a href='{$item['url']}'>{$item['title']}</a></li>";
           }
        }
    }
    
    ul{
    填充:0;
    列表样式:无;
    }
    .sub>li>ul{
    左侧填充:10px;
    }
    .主动{
    边框:1px实心#ddd;
    }
    李,积极,,
    主动的,主动的{
    背景色:#000;
    颜色:白色;
    }
    
    
      • 子项

    将所有菜单链接放在单个数组中:

    $menu = [
      [
        'title' => 'home',
        'url' => 'index.php',
      ],
      [
        'title' => 'Menu with dropdown',
        'key' => 'subs',
        'items' => [
           [
             'title' => 'Sub 1',
             'url' => 'page/sub1',
           ],
           [
              'title' => 'Sub 2',
              'url' => 'page/sub2',
           ],
           ...
        ],
        ...
      ]
    ]
    
    现在使用递归函数运行
    $menu
    并生成菜单结构:

    showMenu($menu);
    
    function showMenu(&$menu, $level = 0) {
        foreach ($menu as $item) {
    
           $class = getItemClass($item, $level).' '.(isActive($item['key'], $level) ? ' active' : '');
    
           if (isset($item['items'])) {
               echo "<ul>";
               echo "<li class='{$class}'>";
               showMenu($item, $level + 1);
               echo "</li>";
               echo "</ul>";
           } else {
               echo "<li class='{$class}'><a href='{$item['url']}'>{$item['title']}</a></li>";
           }
        }
    }
    
    ul{
    填充:0;
    列表样式:无;
    }
    .sub>li>ul{
    左侧填充:10px;
    }
    .主动{
    边框:1px实心#ddd;
    }
    李,积极,,
    主动的,主动的{
    背景色:#000;
    颜色:白色;
    }
    
    
      • 子项

    你的href地址看起来怎么样?它们是引用url还是像单击事件侦听器上的ajax请求一样?你能给出一个示例url,它代表菜单中的url吗?使用PHP,JS会很混乱。听着,如果你知道路径就没那么复杂了:
    class=”“
    你可以像这样继续你的状态:
    class=”“
    @Marcel谢谢你的回复。我没有使用ajax。该站点处于脱机状态((@Troyer谢谢你的回复。问题是,如果我使用上面的方法,我必须在菜单文件中的每个链接中放入一条php语句。结果我得到了很多php语句,阅读起来会非常困难。你的href地址看起来怎么样?它们是指url还是像单击事件侦听器上的ajax请求?Can你给出一个示例url,它代表菜单中的url?使用PHP,JS会很混乱。看,如果你知道路径,就不会那么复杂:
    class=“”
    你可以像这样恢复你的状态:
    class=“”
    @Marcel谢谢你的回复。我没有使用ajax。网站离线((@Troyer感谢您的回复。问题是,如果我使用上面的方法,我必须在菜单文件中的每个链接中放入一条php语句。结果我得到了很多php语句,阅读起来会非常困难。亲爱的Justinas!感谢您的回复!我认为您的代码最适合我的目的。但我不知道Java Scrip(。这就是我在这里寻求帮助的原因。我已经在我的服务器上上传了网站,现在你可以看看代码。目前我只做了两个链接,它们有效,分别是“主页->关于我们”和“塔吉克斯坦->塔吉克斯坦->塔吉克斯坦历史”,我认为这足以理解这个问题。这是我的网站:www.discoverthepamirs.com你能为我的案例修改你的Java脚本代码吗?亲爱的Justinas!谢谢你的回复!我认为你的代码最适合我的目的。但我不知道Java脚本((.这就是我在这里寻求帮助的原因。我已经在我的服务器上上传了网站,现在你可以看看代码。目前我只做了两个链接,它们都有效,分别是“主页->关于我们”和“塔吉克斯坦->塔吉克斯坦->塔吉克斯坦”