登录
首页 >  文章 >  前端

JavaScript中event.relatedTarget用法详解

时间:2026-04-15 20:18:39 281浏览 收藏

`event.relatedTarget` 是 JavaScript 鼠标边界事件(如 `mouseenter`、`mouseleave`、`mouseover`、`mouseout`)中一个关键的只读属性,能精准揭示鼠标“从哪来、到哪去”——在 `mouseover`/`mouseenter` 中指向离开的源元素,在 `mouseout`/`mouseleave` 中指向即将进入的目标元素,为实现智能交互(如来源感知动画、上下文感知菜单)提供底层支持;但需注意其在非边界事件中为 `null`、旧版 IE 不兼容、以及 `relatedTarget` 可能为 `null` 或子元素等常见陷阱,合理判空与使用 `matches()` 等方法才能写出健壮可靠的代码。

如何用 event.relatedTarget 找到鼠标移入移出时的来源节点

event.relatedTarget 是鼠标事件(如 mouseentermouseleavemouseovermouseout)中一个非常实用的只读属性,它指向**与当前事件目标节点相邻的、鼠标正要离开或即将进入的那个节点**。它能帮你精准判断鼠标是从哪个元素移入、或移向了哪个元素——但要注意:它在不同事件中的含义和可用性有差异。

理解 relatedTarget 在不同事件中的行为

不是所有鼠标事件都支持 relatedTarget,也不是它的含义都一样:

  • mouseover / mouseout:支持 relatedTarget
    mouseover 触发时,event.relatedTarget 是鼠标**刚离开的那个元素**(即上一个父/兄弟/子节点);
    mouseout 触发时,event.relatedTarget 是鼠标**即将进入的那个元素**(即下一个目标)。
  • mouseenter / mouseleave:也支持 relatedTarget,但这两个事件不冒泡,且只在真正跨元素边界时触发。
    mouseenterrelatedTarget 是鼠标**离开的前一个元素**(比如从按钮上移入卡片);
    mouseleaverelatedTarget 是鼠标**将要进入的下一个元素**(比如移出卡片后进入侧边栏)。
  • clickmousedown 等非边界事件:没有 relatedTarget(值为 null)。

实际用法:检测鼠标从哪来、到哪去

以一个常见场景为例:你有一个导航菜单项

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>