在菜单项后添加可切换元素

时间:2019-08-19 作者:Demonix

我的网站上有以下菜单:

<ul id="menu-primary" class="offcanvas">
    <li class="menu-item menu-item-has-children">
        <a href="#">Parent</a>
        <ul class="sub-menu">
            <li class="menu-item">
                <a href="#">Child</a>
            </li>
        </ul>
    </li>
    <li class="menu-item menu-item-has-children">
        <a href="#">Parent</a>
        <ul class="sub-menu">
            <li class="menu-item">
                <a href="#">Child</a>
            </li>
        </ul>
    </li>
    <li class="menu-item">
        <a href="#">Parent</a>
    </li>
    <li class="menu-item">
        <a href="#">Parent</a>
    </li>
</ul>
我添加了一些Jquery来隐藏子菜单,并在单击父链接时显示它们,但这会导致父链接不起作用,而只是切换子菜单。

所以我想通过<i> 标签或<span> 在主父链接后标记,然后将jquery更改为target,而使主父链接仍然可以单击。

我该怎么做呢?

1 个回复
最合适的回答,由SO网友:Lazar Momcilovic 整理而成

通过扩展Walker_Nav_Menu 核心类。下面的代码将添加<i> 菜单项后面的图标元素</a> 标记,但如果您需要在内部或其他地方使用它们,您当然可以通过更改$item_output 变量

function yourprefix_menu_arrow($item_output, $item, $depth, $args) {
    if (in_array(\'menu-item-has-children\', $item->classes)) {
        $arrow = \'<i class="fa fa-angle-down"></i>\'; // Change the class to your font icon
        $item_output = str_replace(\'</a>\', \'</a>\'. $arrow .\'\', $item_output);
    }
    return $item_output;
}
add_filter(\'walker_nav_menu_start_el\', \'yourprefix_menu_arrow\', 10, 4);
干杯!

相关推荐

依赖jQuery的脚本忽略$in_footer bool,并且在页眉中不起作用

我的插件使用以下方法将脚本排入jQuery依赖项中:wp_enqueue_script( $plugin_short_slug, plugins_url() . \'/\' . $plugin_slug . \'/js/\' . $plugin_slug . \'.js\', \'\', array(\'jquery\'), \'\', true); 如果我在子主题中使用它,在子主题中我将默认WordPress jQuery出列并从页脚中的CDN加载jQuery,那么jQuery和我的脚本都会落