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

使用JavaScript点击导航栏链接切换li-active激活类异常问题求解

问题原因

你给li绑定了点击事件,但li内部包含div、svg等子元素,实际点击时如果命中这些子元素,e.target 会指向被点击的子元素而非外层的li,导致li-active类被错误添加到子元素上,原本绑定在li上的清除逻辑不会处理子元素的类名,就会出现多个元素同时带li-active类的情况。

解决方案

将代码中的e.target替换为e.currentTarget即可,e.currentTarget始终指向绑定了点击事件的li元素:

menuBtn.forEach((li) => {
  li.addEventListener("click", (e) => {
    menuBtn.forEach((el) => el.classList.remove("li-active"));
    e.currentTarget.classList.add("li-active");
  });
});

如果需要更稳妥的兼容处理,也可以主动向上查找最近的li元素:

menuBtn.forEach((li) => {
  li.addEventListener("click", (e) => {
    const currentLi = e.target.closest('.navbar__links--li')
    if (!currentLi) return
    menuBtn.forEach((el) => el.classList.remove("li-active"))
    currentLi.classList.add("li-active")
  });
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:45:02