javascript - jQuery滑动菜单功能

标签 javascript jquery html css

你好我有一个无序列表菜单,试图让子元素在点击主要元素时上下滑动,我写了一个有效的 jQuery 代码但是当点击打开的菜单时它关闭它并再次打开,但是我希望它会关闭它。

html

<div class="menuNav">
  <ul>
  <li><span>item_1</span>
    <ul>
      <li>sub-item_1-1</li>
      <li>sub-item_1-2</li>
      <li>sub-item_1-3</li>
      <li>sub-item_1-4</li>
    </ul>
  </li>

  <li><span>item_2</span>
    <ul>
      <li>sub-item_2-1</li>
      <li>sub-item_2-2</li>
      <li>sub-item_2-3</li>
      <li>sub-item_2-4</li>
    </ul>
  </li>

  <li><span>item_3</span>
    <ul>
      <li>sub-item_3-1</li>
      <li>sub-item_3-2</li>
      <li>sub-item_3-3</li>
      <li>sub-item_3-4</li>
    </ul>
  </li>
</ul>
</div>

j查询

    $(document).ready(function() {

    $('.menuNav ul li').click(function(){
        $(this).parent().find('ul').slideUp("fast");
        $(this).parent().find("li").removeClass('menuactive');
        $(this).find('ul').slideDown("slow");
        $(this).addClass('menuactive');
        });

    $('.menuNav ul .menuactive').click(function(){
        $(this).parent().find('ul').slideUp("fast");
        });

});

最佳答案

如果 li 有一个类 menuactive,调用 slideUp() 函数并删除类 menuactive否则在所有 ul 上调用 slideUp() 函数,从所有 li 中删除类 menuactive,调用slideDown() 在被点击的对象上添加类 menuactive 到被点击的对象。

$(document).ready(function() {
  $('ul > li > ul').hide();
  $('.menuNav > ul > li').click(function() {
    if ($(this).hasClass('menuactive')) {
      $(this).find('ul').slideUp('fast');
      $(this).removeClass('menuactive');
    } else {
      $(this).siblings().find('ul').slideUp('fast');
      $(this).siblings().removeClass('menuactive');
      $(this).find('ul').slideDown('fast');
      $(this).addClass('menuactive');
    }
  });
});
.menuactive {
  color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="menuNav">
  <ul>
    <li><span>item_1</span>
      <ul>
        <li>sub-item_1-1</li>
        <li>sub-item_1-2</li>
        <li>sub-item_1-3</li>
        <li>sub-item_1-4</li>
      </ul>
    </li>

    <li><span>item_2</span>
      <ul>
        <li>sub-item_2-1</li>
        <li>sub-item_2-2</li>
        <li>sub-item_2-3</li>
        <li>sub-item_2-4</li>
      </ul>
    </li>

    <li><span>item_3</span>
      <ul>
        <li>sub-item_3-1</li>
        <li>sub-item_3-2</li>
        <li>sub-item_3-3</li>
        <li>sub-item_3-4</li>
      </ul>
    </li>
  </ul>
</div>

关于javascript - jQuery滑动菜单功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27753138/

相关文章:

javascript - 如何在移动设备上包含外部 JavaScript

javascript - 将 Javascript Window.open 函数延迟 2 秒

jquery - iDangerous Swiper,后续的 destroy() 和 reInit() 方法

jquery - 如何通过数字位置选择CSS中的某个元素

php - 将 session 数据发布到 Mysql 数据库的列中

javascript - 如何在在线网页中突出显示文本

javascript - Android 2.X 上的数字 9

jquery - 重叠的导航下拉菜单无法使 z-index 正确

javascript - 显示和隐藏 div onclick 按钮

javascript - 防止底层div的onclick事件触发