【问题标题】:Show sub-menu on click单击时显示子菜单
【发布时间】:2016-11-03 05:17:54
【问题描述】:

我想请你帮忙。我试图在点击时显示子菜单。

页面:[www.marekmelena.eu][1]

在左侧,您可以看到几个菜单。它们是由 wordpress 自动创建的。 我想默认隐藏“sub2,sub3”。但是在单击“#main”后,它们应该是可见的。

我已经尝试了这个网站的一些解决方案,但不知何故它不起作用。

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script>
 there should be script, right?
</script>
</head>

我正在通过以下方式调用菜单:

 <div class="menu-style">
   <h4><?php $nav_menu = wp_get_nav_menu_object(6); echo $nav_menu->name; ?></h4>
   <?php wp_nav_menu( array( 'theme_location' => 'main-menu' ) ); ?>
 </div>

这是结果(我想隐藏/显示类子菜单):

<h4>Hlavní menu</h4>

<div class="menu-hlavni-menu-container">
<ul id="menu-hlavni-menu" class="menu">
    <li id="menu-item-61" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-has-children menu-item-61">
       <a href="http://marekmelena.eu/transparentni-ucet/">#main</a>
    <ul class="sub-menu">
       <li id="menu-item-74" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-74">
        <a href="http://marekmelena.eu/sub2/">sub2</a>
         <ul class="sub-menu">
          <li id="menu-item-73" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-73">
           <a href="http://marekmelena.eu/sub3/">sub3</a>
          </li>
         </ul>
       </li>
    <li id="menu-item-76" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-76">
      <a href="http://marekmelena.eu/sub2/">sub2</a>
        <ul class="sub-menu">
            <li id="menu-item-75" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-75">
              <a href="http://marekmelena.eu/sub3/">sub3</a>
            </li>
        </ul>
    </li>
    </ul>
    </li>

    <li id="menu-item-82" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-9 current_page_item menu-item-has-children menu-item-82">
     <a href="http://marekmelena.eu/transparentni-ucet/">Transparentní účet</a>
      <ul class="sub-menu">
        <li id="menu-item-83" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-83">
         <a href="http://marekmelena.eu/o-hw-world-kontakt/">O HW World, kontakt</a>
          <ul class="sub-menu">
        <li id="menu-item-84" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-84"><a href="http://marekmelena.eu/clankyblog/">Články/blog</a></li>
        </ul>
    </li>
    </ul>
    </li>
</ul>
</div>

谢谢你的帮助!! :)

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    使用.toggle() 显示或隐藏.sub-menu 元素。

    .slideToggle() 显示或隐藏.sub-menu 元素,并带有一些额外的“oohlala”(© Matthew Corway

    别忘了.preventDefault() 取消重定向事件(点击带有href 的&lt;a&gt;)。

    .preventDefault() documentation

    $(document).ready(function(){
      $('.menu-item > a').click(function(e){
        e.preventDefault();
        $(this).next('.sub-menu').slideToggle();
      });
    });
    .sub-menu {
      display: none;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <h4>Hlavní menu</h4>
    
    <div class="menu-hlavni-menu-container">
    <ul id="menu-hlavni-menu" class="menu">
        <li id="menu-item-61" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-has-children menu-item-61">
           <a href="http://marekmelena.eu/transparentni-ucet/">#main</a>
        <ul class="sub-menu">
           <li id="menu-item-74" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-74">
            <a href="http://marekmelena.eu/sub2/">sub2</a>
             <ul class="sub-menu">
              <li id="menu-item-73" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-73">
               <a href="http://marekmelena.eu/sub3/">sub3</a>
              </li>
             </ul>
           </li>
        <li id="menu-item-76" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-76">
          <a href="http://marekmelena.eu/sub2/">sub2</a>
            <ul class="sub-menu">
                <li id="menu-item-75" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-75">
                  <a href="http://marekmelena.eu/sub3/">sub3</a>
                </li>
            </ul>
        </li>
        </ul>
        </li>
    
        <li id="menu-item-82" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-9 current_page_item menu-item-has-children menu-item-82">
         <a href="http://marekmelena.eu/transparentni-ucet/">Transparentní účet</a>
          <ul class="sub-menu">
            <li id="menu-item-83" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-83">
             <a href="http://marekmelena.eu/o-hw-world-kontakt/">O HW World, kontakt</a>
              <ul class="sub-menu">
            <li id="menu-item-84" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-84"><a href="http://marekmelena.eu/clankyblog/">Články/blog</a></li>
            </ul>
        </li>
        </ul>
        </li>
    </ul>

    【讨论】:

    • 或者使用SlideToggle 来获得一些额外的 oohlala(专业术语)。
    • 谢谢!我不得不把 放在文件的末尾。所以它正确地显示了它。但是,链接不起作用。有什么线索吗?你可以在那个页面上看到。非常感谢!
    • 如果您保持链接处于活动状态,您将离开该页面。尝试删除e.preventDefault();
    • 要解决这个问题,您可以将仅用于展开或折叠子菜单的锚点设置为href="#"
    • @Robiseb 我想我修好了!我在 page.php
      ....
    【解决方案2】:

    首先隐藏你的子菜单`

    .sub-menu{
      display:none;
      }

    然后添加一些 jQuery 以在用户单击“#main”时显示它。 如果您希望用户在再次单击时能够隐藏它,请使用 toggle 方法,否则您可以使用 show 方法。

    我做了一个简单的 codepen 示例: http://codepen.io/ciammarino/pen/VmZrra

    祝你好运`

    【讨论】:

      猜你喜欢
      • 2018-12-26
      • 2015-08-16
      • 2018-07-02
      • 2017-07-20
      • 2016-10-30
      • 2014-11-12
      • 2015-07-04
      • 1970-01-01
      • 2018-07-29
      相关资源
      最近更新 更多