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

动态添加的a元素绑定addEventListener无效问题求助

问题解决方法

你的问题出在事件委托的目标判断逻辑上:当点击<a>内部的<div>时,event.target指向的是这个div元素,而非外层的<a>,所以原代码里的if (target.className !== 'link-block-2') return会直接终止执行,导致选中样式无法添加。

不需要调整z-index,直接修改事件监听逻辑即可。用Element.closest()方法能快速找到点击元素所属的外层<a>标签,不管点击的是a本身还是它的子元素:

const buttonscontainer = document.getElementById('div-container-other-projects')
buttonscontainer.addEventListener('click', event => {
  // 找到最近的拥有link-block-2类的父元素
  const targetBtn = event.target.closest('.link-block-2');
  // 如果找不到符合条件的元素,直接返回
  if (!targetBtn) return;
  // 移除所有子元素的选中样式
  Array.from(buttonscontainer.children).forEach(child =>
    child.classList.remove('link-block-2--selected'));
  // 给目标按钮添加选中样式
  targetBtn.classList.add('link-block-2--selected');
})

另外提个小问题:你生成的DOM里,<a>和内部的<div>用了相同的id(比如p1_btn),这不符合HTML规范——同一页面内id必须唯一,建议给div的id加个后缀(比如p1_img),避免潜在的DOM操作冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 18:45:49