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

mousemove事件绑定父div时如何让target始终为父元素而非子元素

解决嵌套div绑定mousemove时事件target切换为子元素的问题

原因说明

e.target指向的是实际触发事件的最内层DOM元素,鼠标移动到子div上时,子元素是事件的实际触发源,因此target会变为子元素。

可用解决方案

方案1:使用currentTarget属性(首选)

e.currentTarget永远指向绑定事件监听器的元素,也就是你绑定了mousemove的父div,无需修改HTML结构或样式,直接修改事件处理函数即可:

function handleShowElement(e){
  console.log(e.currentTarget) // 始终输出父div元素
}

方案2:禁用子元素的鼠标事件

如果子元素本身不需要响应任何鼠标交互(点击、hover等),可以给子元素添加CSS属性pointer-events: none,这样子元素不会拦截任何鼠标事件,事件触发源会直接落到父div上:

#child {
  pointer-events: none;
}

注意:该方案会导致子元素自身的所有鼠标相关事件失效,仅适合子元素不需要交互的场景。

方案3:直接引用父元素实例

提前获取父元素的DOM引用,在事件处理函数中直接使用该引用即可,不受target变化影响:

const parentEl = document.getElementById('parent')
function handleShowElement(e){
  console.log(parentEl)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 17:48:04