javascript - 向元素添加隐藏类,但事件除外

标签 javascript css

我希望能够点击一个 div,并让点击的 div 展开,而所有其他 div 通过添加一个“隐藏”类消失(我已经为它们创建了一个“隐藏”类这)。我有一个“事件”类,当添加到 div 时,它会根据需要扩展 div。到目前为止,我可以在单击时将“事件”类添加到 div。

我遇到的问题是,我不知道如何通过向它们添加“隐藏”类来删除其他 div。我假设我需要在初始点击后检查它们是否有事件类,如果没有,则隐藏它们,但我不确定。

HTML:

<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

Javascript:

const items = document.querySelectorAll('.item');

const toggleOpen = (p, e) => {
    p.classList.toggle('active');
}

items.forEach(
item => {
    item.addEventListener('click', toggleOpen.bind(null, item))
})

CSS: 这是我的示例代码,它允许您在单击时添加一个事件类。 https://jsfiddle.net/a60bur1j/8/

最佳答案

我会用 CSS 和父容器上的类来完成。

const items = document.querySelectorAll('.item');

const toggleOpen = (p, e) => {
    p.classList.toggle('active');
    p.parentNode.classList.toggle('active');
}

items.forEach(
item => {
    item.addEventListener('click', toggleOpen.bind(null, item))
})
.container.active div.active {
   display: block;
}

.container.active div {
   display: none;
}
<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

关于javascript - 向元素添加隐藏类,但事件除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48711349/

相关文章:

Javascript 倒数计时器 - 客户端时间与 mySQL 时间

html - 如何确保两个内联元素保持在同一行

javascript - 通过单击链接将元素隐藏后重新出现(需要不包括 return false 或 preventDefault 的解决方案)

html - 我将如何移动这个 float 的 div?

javascript - 如何使用 BeautifulSoup 和 Requests 抓取动态变量 Javascript 值

javascript - 在 angularjs 模板中绑定(bind)外部 URL

javascript - Nodejs - libuv 非阻塞事件回调

jquery - 结合 Rails 和 jQuery、CSS?

javascript - 在 Chrome document.styleSheets 上,当我添加样式表时不会更新

javascript - Moment.js 的 Heroku 时区问题