垂直切换菜单3级父级保持打开状态。jQuery的

本恩

我正在使用一个简单的垂直切换菜单,但是在单击其子级别时无法打开第一个下拉级别。对于这里少的困惑是小提琴,点击“产品”不是“站点”和产品将关闭。

但是,如果单击“产品”而不是“服务” ,则需要做的是,打开一个子目录时,请关闭其他子目录

$('.vtoggle li').each(function(el) {

  $(this).find('a').first().attr('href', 'javascript:;').addClass('vtoggler');

});
$('ul.vtoggle > li:has(ul)').addClass("inactive");
$('ul.vtoggle > li:has(ul) ul').css('display', 'none');

$('.vtoggler').click(function() {

  var checkElement = $(this).next();

  $('.vtoggle li').removeClass('active');
  $(this).closest('li').addClass('active').removeClass("inactive");

  if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
    $(this).closest('li').removeClass('active').addClass('inactive');
    checkElement.slideUp('normal');
  }

  if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {

    $('ul.vtoggle ul:visible').slideUp('normal');
    checkElement.slideDown('normal');
  }

  if (checkElement.is('ul')) {
    return false;
  } else {
    return true;
  }
});
body {
  background: #fff;
}

.vertical ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
  display: block;
  position: relative;
}

.vertical li {
  list-style-type: none;
  padding: 0;
  margin: 0;
  display: block;
  float: none;
  position: relative;
}

.vertical li a {
  display: block;
  height: 45px;
  line-height: 45px;
  padding: 0 10px;
  border: 1px solid rgba(0, 0, 0, 0);
  border-bottom-color: #eee;
}


/* sub menu */

.vertical ul ul {
  display: none;
  position: relative;
  padding: 0 0 0 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<nav class="vertical">
  <ul class="vtoggle">
    <li><a href="#">Home</a></li>
    <li><a href="#">Services +</a>
      <ul>
        <li><a href="#">Service 1</a></li>
        <li><a href="#">Service 2</a></li>
        <li><a href="#">Service 3</a></li>
      </ul>
    </li>
    <li><a href="#">Products +</a>
      <ul>
        <li><a href="#">Widgets</a></li>
        <li>
          <a href="#">Sites +</a>
          <ul>
            <li><a href="#">Site 1</a></li>
            <li><a href="#">Site 2</a></li>
          </ul>
        </li>
        <li><a href="#">Gadgets +</a>
          <ul>
            <li><a href="#">Gadget 1</a></li>
            <li><a href="#">Gadget 2</a></li>
          </ul>
        </li>
      </ul>
    </li>
    <li><a href="#">Contact</a></li>
  </ul>
</nav>

盖塔诺

可以将行包装为:

    var lastUl = $('ul.vtoggle ul:visible:last');
    if (lastUl.find(this).length == 0) {
        $('ul.vtoggle ul:visible').each(function() {
            if ($(this).find(checkElement).length == 0) {
                $(this).slideUp('normal');
            }
        })
    }

片段:

$(function () {
  $('.vtoggle li').each(function (el) {

    $(this).find('a').first().attr('href', 'javascript:;').addClass('vtoggler');

  });
  $('ul.vtoggle > li:has(ul)').addClass("inactive");
  $('ul.vtoggle > li:has(ul) ul').css('display', 'none');

  $('.vtoggler').click(function (e) {

    var checkElement = $(this).next();

    $('.vtoggle li').removeClass('active');
    $(this).closest('li').addClass('active').removeClass("inactive");

    if ((checkElement.is('ul')) && (checkElement.is(':visible'))) {
      $(this).closest('li').removeClass('active').addClass('inactive');
      checkElement.slideUp('normal');
    }

    if ((checkElement.is('ul')) && (!checkElement.is(':visible'))) {

      var lastUl = $('ul.vtoggle ul:visible:last');
      if (lastUl.find(this).length == 0) {
        $('ul.vtoggle ul:visible').each(function() {
          if ($(this).find(checkElement).length == 0) {
            $(this).slideUp('normal');
          }
        })
      }

      checkElement.slideDown('normal');
    }

    if (checkElement.is('ul')) {
      return false;
    } else {
      return true;
    }
  });
});
body {
  background: #fff;
}

.vertical ul {
  list-style-type: none;
  padding: 0;
  margin: 0;
  display: block;
  position: relative;
}

.vertical li {
  list-style-type: none;
  padding: 0;
  margin: 0;
  display: block;
  float: none;
  position: relative;
}

.vertical li a {
  display: block;
  height: 45px;
  line-height: 45px;
  padding: 0 10px;
  border: 1px solid rgba(0, 0, 0, 0);
  border-bottom-color: #eee;
}


/* sub menu */

.vertical ul ul {
  display: none;
  position: relative;
  padding: 0 0 0 20px;
}
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>

<nav class="vertical">
    <ul class="vtoggle">
        <li><a href="#">Home</a></li>
        <li><a href="#">Services +</a>
            <ul>
                <li><a href="#">Service 1</a></li>
                <li><a href="#">Service 2</a></li>
                <li><a href="#">Service 3</a></li>
            </ul>
        </li>
        <li><a href="#">Products +</a>
            <ul>
                <li><a href="#">Widgets</a></li>
                <li>
                    <a href="#">Sites +</a>
                    <ul>
                        <li><a href="#">Site 1</a></li>
                        <li><a href="#">Site 2</a></li>
                    </ul>
                </li>
                <li><a href="#">Gadgets +</a>
                    <ul>
                        <li><a href="#">Gadget 1</a></li>
                        <li><a href="#">Gadget 2</a></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li><a href="#">Contact</a></li>
    </ul>
</nav>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

幻灯片切换菜单不会保持打开状态

来自分类Dev

WordPress如何使切换菜单处于打开状态

来自分类Dev

添加“查看全部”链接以使用jQuery进行切换并默认保持打开状态

来自分类Dev

父级切换时子级的AngularJS动画

来自分类Dev

jQuery幻灯片切换父级而不是子级

来自分类Dev

jQuery幻灯片切换父级而不是子级

来自分类Dev

jQuery仅切换子级

来自分类Dev

jQuery仅切换子级

来自分类Dev

jQuery:切换div的子级

来自分类Dev

使用Cookie保持jQuery菜单保持打开状态

来自分类Dev

jQuery菜单-在父菜单按钮上切换子菜单区域和CSS状态更改

来自分类Dev

用jQuery垂直切换菜单

来自分类Dev

仅在单击父级列表项时切换

来自分类Dev

在最接近的父级中切换类

来自分类Dev

切换当前活动的父元素的子级的类

来自分类Dev

单击父级li时切换孩子

来自分类Dev

在下拉菜单的父级上保持“悬停”状态

来自分类Dev

切换ng级

来自分类Dev

在不同的菜单列表上保持切换状态

来自分类Dev

在悬停父级上切换可见性子级

来自分类Dev

jQuery切换子级可见性

来自分类Dev

默认情况下,第一个切换处于打开状态

来自分类Dev

将鼠标悬停在菜单上时,保持Jquery slideDown菜单处于打开状态?

来自分类Dev

jQuery:单击子子菜单时如何让子菜单保持打开状态

来自分类Dev

使弹出窗口保持打开状态与jQuery

来自分类Dev

对于Angular2 Router3,为什么每次在子级路由之间切换时都没有调用父级路由保护程序?

来自分类Dev

jQuery切换使用Wordpress打开/关闭状态

来自分类Dev

单击该项目后,BootStrap3使下拉菜单保持打开状态

来自分类Dev

Bootstrap Accordion按钮切换“数据父级”不起作用

Related 相关文章

热门标签

归档