如何使用切换按钮使下拉列表的父项可单击?

时间:2018-05-04 01:26:53

标签: javascript jquery wordpress twitter-bootstrap wp-nav-walker

首先,如果你认为我的问题出了问题,请向我解释一下你希望我改变什么来改善它。我已经在这方面工作了几天并没有取得什么成功,而且我真的尽我所能,但我也是这个话题的新手,所以请耐心等待我。

我正在使用Bootstrap 4.0开发WooCommerce Storefront的儿童主题。

我试图使用[jQuery Smartmenus插件] (https://www.smartmenus.org/about/introduction-to-smartmenus-jquery/)和我的主菜单的小屏幕版本的Bootstrap 4插件,因为它带有我想要的切换按钮。这就是我希望它如何工作:就像他们的[" SmartMenus Bootstrap 4 Addon(Navbar)"演示] (http://vadikom.github.io/smartmenus/src/demo/bootstrap-4-navbar.html),但有一点不同:我希望父项是可点击的,这样它就会导致链接而不是切换下拉列表。 +/-按钮应该是唯一的下拉列表。

我设法使用this question的答案的一部分来获取可点击的父链接。我使用相同的nav walker,只使用Bootstrap 4版本。在该文件中,我用" $ atts [' href'] =替换了原始行206!空($ item-> url)? $ item-> url:'';"正如相关问题所示。虽然我没有改变CSS,但我并不希望在悬停时发生任何特殊情况。

我现在的问题是,在加载父链接之前,点击父链接和点击+/-结果都会在下拉列表中展开一段时间,并且我被定向到该链接。我希望父链接不进行任何切换,但更重要的是,我需要+/-按钮来切换下拉列表而不是作为父项目页面的链接。如何让它切换到下拉列表?

我尝试在walker文件的同一部分中删除data-toggle属性和下拉切换类,但这没有任何区别。

以下是header.php中我的小屏幕菜单的代码:

<div id="small-screen-menu" class="d-block d-sm-none">
   <?php sk_smartmenus_init_in_footer(); ?>
   <nav id="xs-site-navigation" class="navbar navbar-expand-sm" role="navigation">
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#main-site-navigation" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
         <span class="navbar-toggler-icon"></span>
      </button>
      <?php
         wp_nav_menu( array(
           'theme_location'    => 'main_menu',
           'depth'             => 4,
           'container'         => 'div',
           'container_class'   => 'collapse navbar-collapse navbar-1-collapse',
           'container_id'      => 'main-site-navigation',
           'menu_class'        => 'nav navbar-nav sm sm-simple',
           'fallback_cb'       => 'WP_Bootstrap_Navwalker::fallback',
           'walker'            => new WP_Bootstrap_Navwalker(),
         ) );
      ?>                            
   </nav>
</div>

以下是functions.php中的相应函数:

if ( ! function_exists( 'sk_smartmenus_init_in_footer' ) ) {
   add_action('wp_enqueue_scripts', 'sk_smartmenus_init_in_footer');
   function sk_smartmenus_init_in_footer() {
    add_action( 'print_footer_scripts', 'smartmenus_init' );
   }
}
function smartmenus_init() { 
   ?>
       <script type="text/javascript">
          $(function() {
            $('#menu-categories-menu').smartmenus();
          });
       </script>
   <?php 
}

我真的不确定这些功能是否正确。我是否需要更改walker文件的更多内容?还是Smartmenus JS?如果是这样,什么?我无法弄明白。任何帮助将不胜感激!

PS:如果你有一个没有Smartmenus插件的解决方案来创建一个带有切换按钮的可点击菜单项,我就会接受它!我并不真正依恋Smartmenus。

2018年12月更新:我仍然没有想到这一点。谁能帮我?请?

0 个答案:

没有答案