javascript - Jquery 目标特定元素 - 下拉菜单

标签 javascript jquery html

我已经创建了一个简单的 jquery 下拉菜单,但是当我单击一个下拉菜单时,它会打开我所有的下拉菜单,我需要在我的代码中添加什么才能使其仅针对单击的特定元素并仅打开该下拉菜单?

如果之前有人问过这个问题,我们深表歉意。

$(document).ready(function() {
  $('a.parent').click(function() {
    $('.sub-menu').slideToggle(400);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="menu-1">
  <li class="parent dropdown"><a class="parent">Link</a>
    <ul class="sub-menu">
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
    </ul>
  </li>
  <li class="parent"><a href="" class="parent">Link</a></li>
  <li class="parent"><a href="" class="parent">Link</a></li>
  <li class="parent"><a href="" class="parent">Link</a></li>
  <li class="parent dropdown"><a class="parent">Link</a>
    <ul class="sub-menu">
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
    </ul>
  </li>
</ul>

最佳答案

问题是因为您选择了 DOM 中的所有 .sub-menu 元素。您只需要使用 this 关键字和 next() 检索被点击的 .parent 的 sibling :

$(document).ready(function() {
  $('a.parent').click(function(e) {
    e.preventDefault();
    $(this).next('.sub-menu').slideToggle(400);
  });
});
.sub-menu {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
HTML:

<ul class="menu-1">
  <li class="parent dropdown">
    <a class="parent" href="#">Link</a>
    <ul class="sub-menu">
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
    </ul>
  </li>
  <li class="parent"><a href="" class="parent">Link</a></li>
  <li class="parent"><a href="" class="parent">Link</a></li>
  <li class="parent"><a href="" class="parent">Link</a></li>
  <li class="parent dropdown">
    <a class="parent" href="#">Link</a>
    <ul class="sub-menu">
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
      <li><a href="">Link</a></li>
    </ul>
</ul>

另请注意使用 preventDefault() 来阻止导致页面重定向的父链接。

关于javascript - Jquery 目标特定元素 - 下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52114078/

相关文章:

javascript - 无法识别的帧操作码 : 5 and web socket closes

javascript - 谷歌脚本: XML parsing errors

javascript - 实现图像库,在滚动条上延迟加载未知大小的图像并以最佳方式定位它们

javascript - 导航到下一个 div 不起作用

Javascript/html、动态 div、来自 2d 数组的单个 href?

javascript - 以下内容是有效的 XHTML 1.0 Transitional 吗?

javascript - 使用 localStorage 提交表单后保持分区处于事件状态

jQuery.fn.load() 已弃用?

javascript - 快速 Jquery .load 聊天不起作用

PHP - 根据文件夹名称激活链接