javascript - 如何通过 jQuery 滑动切换下拉菜单项?

标签 javascript jquery html css

我有以下代码。它的作用是在点击 li 时,它的下拉菜单将向下滑动。如果单击旁边的另一个 li,另一个下拉菜单会向下滑动,然后前一个下拉菜单会向上滑动。

但是,如果我点击同一个 li 来“打开”和“关闭”它,那么下拉菜单只会在第一次点击时向下滑动,然后在第二次点击时尝试并“关闭”它,它会再次向下滑动。

所以问题是,如果我单击父链接并在之后立即再次单击它,下拉菜单会向上滑动,然后再次向下滑动。它不会保持“关闭”状态或不会切换。

这是我的代码:

$(".dropdown").click(function() {
  $("li > ul").slideUp();
  $('li > ul').not($(this).children("ul").slideToggle("swing"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<li class="dropdown">
  <a href="#" class="dropdown-toggle">Parent Link</a>
  <ul class="dropdown-menu">
    <li>
      <div class="my-content">
        <div class="row">
          <ul>
            <li><a href="/">dropdown link</a></li>
            <li><a href="/">dropdown link</a></li>
            <li><a href="/">dropdown link</a></li>
          </ul>
        </div>
      </div>
    </li>
  </ul>
</li>

最佳答案

我不知道你的 html 和 css 代码怎么样,但这可以提供思路。

$(".dropdown").click(function () {
  $(".dropdown > ul").slideUp();
  $(this).find("ul").slideDown();
})
li.dropdown > ul{
    display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li class="dropdown">
    test1
    <ul>
      <li>testa</li>
      <li>testb</li>
    </ul>
  </li>
  <li class="dropdown">
    test2
    <ul>
      <li>testc</li>
      <li>testd</li>
    </ul>
  </li>
</ul>

关于javascript - 如何通过 jQuery 滑动切换下拉菜单项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289592/

相关文章:

javascript - Gulp 无法定位@导入文件 nib.style

javascript - 当我追加新的 div 时,警报不会被触发

html - "document type does not allow element "脚本 "here"尝试验证我的页面时

javascript - jQuery/css让两个div显示在同一行

javascript - 使用多个隐藏/显示 div 减少 javascript

javascript - 如何使用 handlebar helpers 打印 JSON 对象

javascript - 当元素存在时,“classList”属性返回 null?

javascript - 在 document.ready() 中异步加载外部 JS 文件

jquery - "jQuery("#marquee ").marquee is not a function"错误

javascript - 运行 jQuery 应用程序时遇到问题?