如何使用jquery关闭子菜单项



我创建了一个具有三个级别的菜单,并希望当您单击新的子菜单标题时关闭任何打开的子菜单。我已经设法让它适用于第一个子菜单,但不适用于第二个子菜单,当我单击第二个子菜单时,它会关闭,因为我试图为两个级别重复使用相同的类有办法解决这个问题吗?另外,由于我已经删除了函数中的类,因此当您单击其标题时,它已停止关闭子菜单,因此有没有办法也可以完成此操作:

目录:

 <nav id="main-nav" role="navigation">
        <div class="block">
            <h2 class="block-title">Main menu</h2>
            <ul>
                <li class="is-active">
                    <a href="#">Link</a>
                </li><!--
             --><li>
                    <a class="toggle-sub-nav" href="#">Link ></a>
                      <ul class="sub-nav">
                          <li><a href="#">Sub link</a></li>
                          <li><a href="#">Sub link</a></li>
                          <li><a href="#">Sub link</a></li>
                      </ul>
                </li><!--
             --><li>
                    <a href="#">Link</a>
                </li><!--
             --><li>
                    <a class="toggle-sub-nav" href="#">Link ></a>
                    <ul class="sub-nav">
                          <li><a href="#">Sub link</a></li>
                          <li> <a class="toggle-sub-nav" href="#">Sub Link ></a>
                    <ul class="sub-nav">
                          <li><a href="#">Sub link</a></li>
                          <li><a href="#">Sub link</a></li>
                          <li><a href="#">Sub link</a></li>
                      </ul></li>
                          <li><a href="#">Sub link</a></li>
                      </ul>
                </li><!--
             --><li>
                    <a href="#">Link</a>
                </li>
            </ul>
           </div>
</nav>

子菜单的 CSS:

.sub-nav { 
     height: 0px;
    -webkit-transition: all 600ms cubic-bezier(.42,0,.58,1);
    -moz-transition: all 600ms cubic-bezier(.42,0,.58,1);
    -o-transition: all 600ms cubic-bezier(.42,0,.58,1);
    -ms-transition: all 600ms cubic-bezier(.42,0,.58,1);
    transition: all 600ms cubic-bezier(.42,0,.58,1);
    overflow:hidden;
  }

  .sub-nav-open {
    height: auto;
    max-height: 500px;
  }
.sub-nav li { background-color: #666; } 

Jquery:

$(function() {
    $(".toggle-sub-nav").click(function() {
        $('.sub-nav').removeClass('sub-nav-open');
            $(this).next(".sub-nav").toggleClass('sub-nav-open');
            return false;
    });
}); 

您可以使用notclosest来避免关闭第一关。

法典:

$(function () {
    $(".toggle-sub-nav").click(function () {
        $('.sub-nav').not($(this).closest('.sub-nav')).removeClass('sub-nav-open');
        $(this).next(".sub-nav").toggleClass('sub-nav-open');
        return false;
    });
});

演示:http://jsfiddle.net/IrvinDominin/CnEy8/

相关内容

  • 没有找到相关文章