我有两个菜单项,它们会落入固定位置的“大型菜单”(由类.has_children定义)。但是下面的jQuery意味着我可以单击两个下拉菜单,它们将彼此重叠;我想要的是在任何时候都看不到不超过1个菜单。也就是说,当前的一个隐藏了,被点击的一个可见了。

jQuery的

jQuery(document).ready(function($) {

  $('li.has_children a').click(function() {
    $(this).closest($('li.has_children')).find('ul.sec_nav').toggleClass('is_hidden');
  });

});


的HTML

<li class="has_children"><a href="#">Games</a>
  <ul class="is_hidden sec_nav">
    <li>
      <h4>Board Games</h4>
      <ul class="is_hidden">
        <li>Listing</li>
        <li>Listing</li>
        <li>Listing</li>
        <li>Listing</li>
      </ul>
    </li>
  </ul>
</li>

<li class="has_children"><a href="#">Computers</a>
  <ul class="is_hidden sec_nav">
    <li>
      <h4>Windows</h4>
      <ul class="is_hidden">
        <li>Listing</li>
        <li>Listing</li>
        <li>Listing</li>
        <li>Listing</li>
      </ul>
    </li>
  </ul>
</li>

最佳答案

您可以将类添加到其他元素以隐藏它们



jQuery(document).ready(function($) {

  $('li.has_children a').click(function() {
    var $target = $(this).closest('li.has_children').find('ul.sec_nav').toggleClass('is_hidden');
    $('li.has_children ul.sec_nav').not($target).addClass('is_hidden')
  });

});

.is_hidden {
  display: none;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="has_children"><a href="#">Games</a>
    <ul class="is_hidden sec_nav">
      <li>
        <h4>Board Games</h4>
        <ul class="is_hidden">
          <li>Listing</li>
          <li>Listing</li>
          <li>Listing</li>
          <li>Listing</li>
        </ul>
      </li>
    </ul>
  </li>

  <li class="has_children"><a href="#">Computers</a>
    <ul class="is_hidden sec_nav">
      <li>
        <h4>Windows</h4>
        <ul class="is_hidden">
          <li>Listing</li>
          <li>Listing</li>
          <li>Listing</li>
          <li>Listing</li>
        </ul>
      </li>
    </ul>
  </li>
</ul>

关于javascript - 切换不同的类.click(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33538837/

10-11 14:14