【问题标题】:Is it possible to create one javascript that controls multiple dropdown menus?是否可以创建一个控制多个下拉菜单的 javascript?
【发布时间】:2016-07-10 21:27:05
【问题描述】:

我创建了一个非常简单的javascript:

function dropdownFunction() {
  document.getElementById("dropdown").classList.toggle("show");
}

使用以下 HTML:

<div class="dropdown">
  <button onclick="dropdownFunction()" class="dropbtn">Dropdown</button>
  <div id="dropdown" class="dropdown-content">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
  </div>
</div>

这可行,但是正如您所期望的,当我使用相同的 HTML 代码创建第二个下拉按钮时,单击它会打开第一个按钮下拉菜单。我想知道是否可以修改该脚本,以便我可以将该功能用于所有下拉菜单,而不是为我在网站上使用的每个下拉按钮创建新功能。

【问题讨论】:

  • 你能添加更多你提到的下拉菜单

标签: javascript jquery html css drop-down-menu


【解决方案1】:

当然。当您调用该函数时,传递对被点击元素的引用:

onclick="dropdownFunction.call(this)"

...然后在函数中使用该引用找到合适的 div:

this.parentNode.querySelector(".dropdown-content").classList.toggle("show");

这是上述内容的工作演示:

function dropdownFunction() {
  this.parentNode.querySelector(".dropdown-content").classList.toggle("show");
}
.dropdown-content {
  display: none;
}
.show {
  display: block;
}
<div class="dropdown">
  <button onclick="dropdownFunction.call(this)" class="dropbtn">Dropdown</button>
  <div class="dropdown-content">
    <a href="#">Link 1</a>
    <a href="#">Link 2</a>
    <a href="#">Link 3</a>
  </div>
</div>

<div class="dropdown">
  <button onclick="dropdownFunction.call(this)" class="dropbtn">Dropdown 2</button>
  <div class="dropdown-content">
    <a href="#">Link A</a>
    <a href="#">Link B</a>
    <a href="#">Link C</a>
  </div>
</div>

【讨论】:

  • 您在文档中有重复的#dropdown
  • @Mohammad - ID 不是必需的,所以我将从演示中删除它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-15
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2018-10-30
相关资源
最近更新 更多