Walker或wp_Get_NAV_Menu_Items与jQuery

时间:2017-04-29 作者:LebCit

Self wondering question

我有这样的菜单配置(例如):

<nav class="nav-wrapper">
    <ul class="main-nav">
        <li><a href="#0">Home</a></li>
        <li><a href="#0">About</a></li>
        <li>
            <a href="#0" class="subnav-trigger"><span>Links</span></a>
            <ul>
                <li class="go-back"><a href="#0">Menu</a></li>
                <li><a href="#0">Lk 1</a></li>
                <li><a href="#0">Lk2 2</a></li>
                <li><a href="#0">Lk 3</a></li>
                <li><a href="#0" class="holder">holder</a></li>
            </ul>
        </li>
    </ul> <!-- .main-nav -->
</nav> <!-- .nav-wrapper -->
正如你所看到的,只有any <li> 有子对象的将获得特定输出
使用wp_nav-menu :

wp_nav_menu(array(
    \'theme_location\' => \'menu\',
    \'container\' => \'nav\',
    \'container_class\' => \'nav-wrapper\',
    \'menu_class\' => \'main-nav\',
    \'depth\' => 2
));
我们可以得到menu-item, 但要输出<li> 如果有孩子,我们必须写一个习惯Walker 或使用wp_get_nav_menu_items 作用

我无法获得预期的输出
But any function will not be less than 3 lines of code 在jQuery的时候我就这么做了with 2 lines :

$(\'ul li:has(ul) > a\').addClass(\'subnav-trigger\').wrapInner(\'<span/>\');
$(\'ul li ul\').prepend(\'<li class="go-back"><a href="#0">Menu</a></li>\').append(\'<li><a href="#0" class="holder">holder</a></li>\');
My self question and for others :<我应该让它与自定义Walker 还是WP函数
如果是,为什么在jQuery中只需要2行代码就要浪费时间和字节?!

提前感谢您的所有回复<当然,如果能看到Walker 或任何其他功能<li> 有孩子,但如果我真的应该用WP方式而不是jQuery方式,那么这个问题对我来说更重要的是理解目的。再次感谢你,西娅:)

1 个回复
SO网友:Benoti

如您所知,walker是服务器端方法,而jQuery是客户端方法。你需要选择在任何情况下都是最好的。如果您没有为每个菜单使用专用的Walker,默认的WordPress Walker将运行,那么为什么不使用您自己的,并通过jQuery为不同的支持目标调整它呢?