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

点击Button内部i标签时event.target获取不到Button自身id如何解决

问题根因

event.target 指向实际触发点击事件的最内层DOM节点:点击图标区域时target为无id的<i>标签,点击按钮边缘时target为带id的<button>标签,因此出现id返回空的情况。

推荐解决方案

方案1:使用event.currentTarget获取绑定事件的元素(最优先推荐)

事件对象的currentTarget属性永远指向绑定了当前点击事件处理函数的DOM节点,无论实际点击的是按钮内部的哪个子元素,都能准确拿到按钮的属性。
仅需修改handleClick回调内的取值逻辑即可:

console.log(event.currentTarget.id);

该方案无需修改组件结构,无冗余代码,是最优选择。

方案2:给内部图标禁用鼠标事件响应

给<i>标签添加CSS属性pointer-events: none,让图标完全不响应任何鼠标交互事件,此时点击图标区域时,事件会直接穿透到父级按钮元素,event.target就会变成按钮本身:

<button id={props.id} 
   onClick={props.handleClick} 
   className="btn btn-circle" >
   <i class="fas fa-angle-down" style={{pointerEvents: 'none'}}></i>
</button>

如果按钮内部有多个子元素,可统一给按钮的所有直接子元素设置该样式,避免重复配置。


不建议使用给i标签加相同id的方案

该方案会产生冗余代码,后续如果按钮内部新增其他子元素,还需要给所有子元素都加id属性,维护成本高,同时不符合HTML id属性全局唯一的规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:45:02