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

点击子div触发点击函数时,如何获取父元素的data-id?

解决React中点击子元素获取父元素data-id的问题

问题核心:点击父div内的子元素时,event.target指向的是实际被点击的子元素(比如<img>或子<div>),这些元素没有设置data-id,所以返回null。下面是几种靠谱的解决方法:

方法1:使用event.currentTarget

currentTarget永远指向绑定了事件处理函数的那个元素(也就是带data-id的父div),直接用它获取属性:

const onMenuItemClick = (event) =>{
    console.log("onMenuItemClick data-id", event.currentTarget.getAttribute('data-id'));
}

方法2:利用dataset简化获取

React的合成事件支持通过dataset直接访问data属性,写法更简洁:

const onMenuItemClick = (event) =>{
    console.log("onMenuItemClick data-id", event.currentTarget.dataset.id);
}

注:data-id="show"对应dataset.id,如果是data-user-id这类多段命名的属性,会自动转为驼峰式dataset.userId。

方法3:直接传递参数(不依赖事件对象)

如果不需要使用事件对象的其他属性,可以在绑定事件时直接把data-id的值传进去,代码更直观:

修改JSX:

<div onClick={() => onMenuItemClick('show')} data-id="show">
    <div className={styles['contextIconBox']}>
        <img src={btn_delete} className={styles['contextIcon']}/>
    </div>
    <div className={styles['contextLabel']}> myarea</div>
</div>

修改事件函数:

const onMenuItemClick = (id) =>{
    console.log("onMenuItemClick data-id", id);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 11:17:13