当前位置: 首页 > 知识库问答 >
问题:

将活动类添加到当前菜单项中

乜烨霖
2023-03-14

我使用下面的代码将活动类添加到菜单项。该网站是99%使用WooCommerce的Ecomm,我使用产品类别作为顶级导航项目。下面的代码适用于几乎所有项目,除非在产品子类别上处于活动状态。

add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);

function special_nav_class ($classes, $item) {
    if (in_array('current-post-ancestor', $classes) || in_array('current-page-ancestor', $classes) || in_array('current-menu-item', $classes) ){
        $classes[] = 'active ';
    }
    return $classes;
}

本质上,我希望顶层导航项被标记为活动类,即使选择了子类别。

共有1个答案

缑永年
2023-03-14

我认为最好的应用是使用javascript或jQuery,假设你的菜单是这样的:

<nav>
    <ul>
        <li><a href="">Top level</a></li>
        <li><a href="">Top level</a></li>
        <li><a href="">Top level</a>
            <ul>
                <li><a href="">Sub category</a></li>
                <li><a href="">Sub category</a></li>
                <li class="active"><a href="">Sub category</a></li>
                <li><a href="">Sub category</a></li>
            </ul>
        </li>
        <li><a href="">Top level</a></li>
        <li><a href="">Top level</a></li>
    </ul>
</nav>

我们需要做的就是检查哪一个顶级菜单中有一个类为active的li,因此我们的jquery代码如下所示:

<script>
    jQuery(document).ready(function(){
        // Adding class "active" to all top-level menus that contain an li.active item
        $('nav > ul > li').each(function(){
            if( $(this).has('li.active').length ) {
                $(this).addClass('active');
            }
        });
    });
</script>

这是一把小提琴

 类似资料:
  • 我有一个基于WordPress的网站,我的主题通过添加“当前菜单项”类来突出当前菜单项。 问题是,我有一个包含3个子菜单项的菜单项,它们都指向具有不同容器ID的相同页面(它们的href包含容器ID),因此它们都被突出显示。 如何仅突出显示href指向当前查看的容器的菜单项? 我尝试了这个答案,在标签后面插入了以下内容:

  • 我有这样的菜单结构: 如果单击菜单中的相同href,我想将活动类添加到选项卡中,即: 我正在处理这段代码,但它似乎与我想要达到的目标不太接近: 如何添加活动类到选项卡和删除它从所有其他与点击相同的href链接点击在下拉菜单? 欢迎任何建议

  • 如果菜单项url==当前url,我有以下代码可以将活动css类添加到菜单项: 但这会将该类添加到所有菜单项中。有什么提示吗?

  • 我有一个android webview默认文本选择的问题。我想做的是添加一个项目到默认菜单,它出现在webview的文本选择上 我想要的功能是添加一个按钮到左侧的全选。如何做到这一点

  • 我向每个Wordpress菜单项添加了类,但它们没有出现在代码中。 我的菜单: 我的职能。php包括 所以我有 但是没有我在Wordpress管理菜单中添加的任何类。为什么呢?

  • 在React Native中,进行开发构建时,您可以摇动设备或使用菜单按钮打开开发人员菜单。如何将其他自定义项添加到此菜单?我还没有找到任何关于添加另一项的文档,但我认为从“开发”菜单中选择“在服务器环境(开发、产品等)之间切换”会非常方便,而不是针对每个环境进行单独的构建测试。