如何在单击子按钮时将"活动的"切换类添加到父div.我可以在jQuery中做到这一点,但我想使用纯Java脚本.

为了更好地理解,下面是示例html代码片段.

<div class="parent-div">
      <div class="title-of-the-section">Section title</div>
      <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
    </div>

    <div class="parent-div">
      <div class="title-of-the-section">Section title</div>
      <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
    </div>

    <div class="parent-div">
      <div class="title-of-the-section">Section title</div>
      <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
    </div>

    <div class="parent-div">
      <div class="title-of-the-section">Section title</div>
      <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
    </div>

我不想使用document.getElementById(''),因为将有几个部分,在每个部分将保持按钮,以添加触发类.

我try 了其他一些示例,但它们是基于ID而不是类的,我不能重复相同的ID,它也不起作用.

推荐答案

使用‘最接近’来获取与具有特定 Select 器的元素最接近的元素.在本例中, Select 器是CLASS.

我们还可以判断类是否已经设置并再次关闭它,从而进行切换.

https://developer.mozilla.org/en-US/docs/Web/API/Element/closest

var elements = document.getElementsByClassName("toggle-class-button");

var setActive = function() {
  let closestElement = this.closest('.parent-div');

  if (closestElement.classList.contains('active')) {
    closestElement.classList.remove('active')
  } else {
    closestElement.classList.add('active')
  }
};

Array.from(elements).forEach(function(element) {
  element.addEventListener('click', setActive);
});
.active {
  color: red;
}
<div class="parent-div">
  <div class="title-of-the-section">Section title</div>
  <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
</div>

<div class="parent-div">
  <div class="title-of-the-section">Section title</div>
  <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
</div>

<div class="parent-div">
  <div class="title-of-the-section">Section title</div>
  <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
</div>

<div class="parent-div">
  <div class="title-of-the-section">Section title</div>
  <button class="toggle-class-button">Add "active" class to parent div of ['parent-div']</button>
</div>

Javascript相关问答推荐

有条件的悲剧

如何找出摆线表面上y与x相交的地方?

使用i18next在React中不重新加载翻译动态数据的问题

为什么ngModel不能在最后一个版本的Angular 17上工作?'

如何在mongoose中链接两个模型?

在网页上添加谷歌亵渎词

在Vite React库中添加子模块路径

如何在ASP.NET JavaScript中使用Google Charts API仅对绘制为负方向的条形图移动堆叠条形图标签位置

Web Crypto API解密失败,RSA-OAEP

有条件重定向到移动子域

使用getBorbingClientRect()更改绝对元素位置

如何在Node.js中排除导出的JS文件

为什么客户端没有收到来自服务器的响应消息?

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

在FAQ Accodion应用程序中使用React useState时出现问题

如何在Jest中模拟函数

无法使用npm install安装react-dom、react和next

我在哪里添加过滤器值到这个函数?

如何设置时间选取器的起始值,仅当它获得焦点时?

如何向内部有文本输入字段的HTML表添加行?