javascript - bool 玛框架的下拉 JavaScript

标签 javascript jquery bulma

我有以下问题,我正在尝试使用 javascript 和 bulma 框架来使用两个下拉列表

但问题是,当我点击它时,只显示一个下拉菜单,但如果我点击第二个下拉菜单,它就不会打开。

<div class="dropdown">
  <div class="dropdown-trigger">
    <button class="button" aria-haspopup="true" aria-controls="dropdown-menu">
      <span>Dropdown button</span>
      <span class="icon is-small">
        <i class="fas fa-angle-down" aria-hidden="true"></i>
      </span>
    </button>
  </div>
  <div class="dropdown-menu" id="dropdown-menu" role="menu">
    <div class="dropdown-content">
      <a href="#" class="dropdown-item">
        Dropdown item
      </a>
      <a class="dropdown-item">
        Other dropdown item
      </a>
      <a href="#" class="dropdown-item is-active">
        Active dropdown item
      </a>
      <a href="#" class="dropdown-item">
        Other dropdown item
      </a>
      <hr class="dropdown-divider">
      <a href="#" class="dropdown-item">
        With a divider
      </a>
    </div>
  </div>
</div>

<div class="dropdown">
  <div class="dropdown-trigger">
    <button class="button" aria-haspopup="true" aria-controls="dropdown-menu">
      <span>Dropdown button</span>
      <span class="icon is-small">
        <i class="fas fa-angle-down" aria-hidden="true"></i>
      </span>
    </button>
  </div>
  <div class="dropdown-menu" id="dropdown-menu" role="menu">
    <div class="dropdown-content">
      <a href="#" class="dropdown-item">
        Dropdown item
      </a>
      <a class="dropdown-item">
        Other dropdown item
      </a>
      <a href="#" class="dropdown-item is-active">
        Active dropdown item
      </a>
      <a href="#" class="dropdown-item">
        Other dropdown item
      </a>
      <hr class="dropdown-divider">
      <a href="#" class="dropdown-item">
        With a divider
      </a>
    </div>
  </div>
</div>

JavaScript 代码:

var dropdown = document.querySelector('.dropdown');
dropdown.addEventListener('click', function(event) {
  event.stopPropagation();
  dropdown.classList.toggle('is-active');
});

我已经加载了 bulma 和 jquery 各自的库,但我仍然无法让两个下拉菜单都工作。

最佳答案

您的方向是正确的,但您错误地使用了 .querySelector()。请参阅docs :

The querySelector() method returns the first element that matches a specified CSS selector(s) in the document

强调我的。

解决方案是使用.querySelectorAll()。这将返回所有下拉列表的数组。然后您可以迭代它们并向它们附加一个事件监听器。

document.querySelectorAll('.dropdown').forEach(item => {
    item.addEventListener('click', function(event) {
        event.stopPropagation();
        item.classList.toggle('is-active');
    });
});

关于javascript - bool 玛框架的下拉 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67185585/

相关文章:

jquery - 如何在 jQuery 中粗体匹配两个列表框中的项目?

html - 我的类 flex wrap 不适用于 div 元素

javascript - 如何在 html 中创建图像幻灯片?

javascript - 页面加载后显示元素

javascript - 为什么 Javascript 规范设计者在 promise 中引入了 microtask

javascript - 当鼠标进入 div 时显示顶部菜单栏

javascript - 仅当值为 false 时阻止事件并在 Vue 中包含自定义 Bulma 扩展

javascript - 导航栏颜色更改以匹配该部分

javascript - JS 日期到 ISO 字符串奇怪的行为

javascript - 当用户单击缩略图时,我希望在 html 中弹出该图像