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

如何在JS中获取绑定事件监听器的HTML元素而非点击子元素?

解决事件监听中点击子元素时获取绑定元素的问题

你遇到的问题源于事件冒泡机制:点击子元素时,事件会向上冒泡到绑定了监听器的父元素,但event.target始终指向实际被点击的子元素。要获取绑定事件监听器的目标元素,有两种可靠方案:

方法一:使用event.currentTarget

event.currentTarget在事件处理过程中,始终指向绑定当前事件监听器的元素,不受冒泡影响,无论点击的是元素本身还是其子元素。修改代码如下:

function myFunction(event) {
    // 用currentTarget替代target,精准指向绑定事件的元素
    if (event.currentTarget === something) {
        console.log('test')
    }
}

something.addEventListener('click', myFunction)
somethingelse.addEventListener('click', myFunction)

方法二:使用this(注意局限性)

普通函数作为事件处理函数时,this默认指向绑定事件的元素,效果和event.currentTarget一致:

function myFunction(event) {
    if (this === something) {
        console.log('test')
    }
}

something.addEventListener('click', myFunction)
somethingelse.addEventListener('click', myFunction)

⚠️ 注意:如果事件处理函数是箭头函数,this不会指向绑定事件的元素(箭头函数没有自身的this,会继承外部作用域的this),这种情况优先用event.currentTarget更稳妥。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:34:53