首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由jquery控制的多层次html菜单

由jquery控制的多层次html菜单
EN

Stack Overflow用户
提问于 2019-05-30 09:48:05
回答 1查看 96关注 0票数 3

我正面临一个多层菜单的问题。我需要jQuery来显示或隐藏当前选择的子菜单,并保持其他菜单不变。我还不是很熟练的JQuery,所以任何帮助都会非常感激。我和你分享我所拥有的。提前感谢!

我想提一下,我在StackOverflow上找到了一个部分起作用的例子。经过一些调试后,我意识到var mobileMenu.css返回undefined,这有时会使代码工作。

代码语言:javascript
复制
var test1 = $('ul.hdrMenu li');

test1.on( 'click', function(e) 
{   
    var mobileMenuItem  = $(e.target).parent().find( '> ul.sub-menu' );

    if( **typeof mobileMenuItem.css('display') === "undefined"** )
    {
        mobileMenuItem  = $(e.target).parent().parent().find( '> ul.sub-menu' );          
    }

    if( mobileMenuItem.css('display') == 'none' ) 
    {
        e.preventDefault();
        mobileMenuItem.slideDown();
        e.stopPropagation();
    } 
    else if( mobileMenuItem.css('display') == 'block' ) 
    {
        e.preventDefault();
        mobileMenuItem.slideUp();
        e.stopPropagation();
    }
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="hdrMenu">
  <li><a href="#">Inicio</a></li>
  <li><a href="#">Servicios</a>
    <ul class="sub-menu">
      <li><a href="#">L1</a></li>
      <li><a href="#">L2</a>
        <ul class="sub-menu">
          <li><a href="#">L2-1</a></li>
          <li><a href="#">L2-2</a></li>
        </ul>
      </li>
      <li><a href="#">L3</a></li>
      <li><a href="#">L4</a>
        <ul class="sub-menu">
          <li><a href="#">L4-1</a></li>
          <li><a href="#">L4-4</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#">Acerca de</a>
    <ul class="sub-menu">
      <li><a href="#">Sub1</a></li>
      <li><a href="#">Sub2</a></li>
      <li><a href="#">Sub3</a></li>
      <li><a href="#">Sub4</a></li>
    </ul>
  </li>
  <li><a href="#">Contacto</a></li>
</ul>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-30 09:56:51

代码工作得很好,我认为您只需要删除父选择器.hdrNav,它必须如下所示:

代码语言:javascript
复制
var test1 = $('ul.hdrMenu li');

或者,您可以保留选择器,并在类hdrNav中添加父div。

代码语言:javascript
复制
var test1 = $('ul.hdrMenu li');
test1.on('click', function(e) {
  var mobileMenu = $(e.target).parent().find('> ul.sub-menu');

  if (mobileMenu.css('display') == 'none') {
    e.preventDefault();
    mobileMenu.slideDown();
    e.stopPropagation();
  } else if (mobileMenu.css('display') == 'block') {
    e.preventDefault();
    mobileMenu.slideUp();
    e.stopPropagation();
  }
});
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="hdrMenu">
  <li><a href="#">Inicio</a></li>
  <li><a href="#">Servicios</a>
    <ul class="sub-menu">
      <li><a href="#">L1</a></li>
      <li><a href="#">L2</a>
        <ul class="sub-menu">
          <li><a href="#">L2-1</a></li>
          <li><a href="#">L2-2</a></li>
        </ul>
      </li>
      <li><a href="#">L3</a></li>
      <li><a href="#">L4</a>
        <ul class="sub-menu">
          <li><a href="#">L4-1</a></li>
          <li><a href="#">L4-4</a></li>
        </ul>
      </li>
    </ul>
  </li>
  <li><a href="#">Acerca de</a>
    <ul class="sub-menu">
      <li><a href="#">Sub1</a></li>
      <li><a href="#">Sub2</a></li>
      <li><a href="#">Sub3</a></li>
      <li><a href="#">Sub4</a></li>
    </ul>
  </li>
  <li><a href="#">Contacto</a></li>
</ul>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56375744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档