You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript为div添加CSS类而不作用于其子元素?

解决点击事件中仅给父div添加/移除CSS类的问题

你当前的代码在点击div内的h5或p元素时,会把bg_yellow类添加到子元素上,而非目标div本身。这是因为event.target指向的是实际被点击的元素,而不是绑定事件的父div。

修改后的JavaScript代码

直接操作绑定事件的div元素(el),确保类只添加到目标div上:

let heading = document.querySelectorAll(".sf_day_card_heading");

heading.forEach((el) => {
  el.addEventListener('click', () => {
    // 移除所有div的bg_yellow类
    heading.forEach((e) => e.classList.remove('bg_yellow'));
    // 给当前绑定事件的div添加类
    el.classList.add('bg_yellow');
  })
})

也可以用event.currentTarget(始终指向绑定事件的元素)实现相同效果:

let heading = document.querySelectorAll(".sf_day_card_heading");

heading.forEach((el) => {
  el.addEventListener('click', (event) => {
    heading.forEach((e) => e.classList.remove('bg_yellow'));
    // currentTarget指向绑定事件的div,而非点击的子元素
    event.currentTarget.classList.add('bg_yellow');
  })
})

对应的HTML和CSS

HTML

<div class="sf_day_card_heading">
  <h5>MON</h5>
  <p>January 9</p>
</div>

<div class="sf_day_card_heading">
  <h5>MON</h5>
  <p>January 9</p>
</div>

CSS

.bg_yellow {
  background: yellow;
}

核心说明

  • el是通过querySelectorAll获取到的目标div,直接操作它能确保类只作用在父div上。
  • event.currentTarget与el效果一致,它始终指向绑定事件的元素,不会随点击的子元素变化。

内容的提问来源于stack exchange,提问作者tukitooo1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:25:17