← jQuery keyup()事件:按键松开时的处理 jQuery mouseleave()事件:鼠标离开元素时触发 →

jQuery mouseenter()事件:鼠标进入元素时触发

原创 2026-04-30 jQuery 已有人查阅

前面讲键盘事件的时候,三个方法覆盖了按键的完整生命周期。鼠标事件也有类似的体系,mouseenter() 就是其中专门用于检测鼠标指针进入元素边界的方法。当用户把光标移动到某个元素上方时,mouseenter 事件立刻触发。

mouseenter() 通常和 mouseleave() 成对使用,一个管进入,一个管离开。这对组合在实现悬停效果、菜单展开、提示框显示等交互时非常常见。

语法形式

触发 mouseenter 事件:

$(selector).mouseenter()

程序化地触发 mouseenter 事件,让已绑定的处理函数执行。

绑定 mouseenter 事件:

$(selector).mouseenter(function(){
    // 鼠标进入元素时执行的代码
})

给选中元素绑定鼠标进入事件。这是最常用的写法。

基础示例:鼠标进入标题时显示提示

下面这个例子用 mouseenter() 监听标题元素。当鼠标移入标题区域时,下方显示提示文字,2 秒后自动消失。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>mouseenter() 基础示例</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<body>
    <h1 id="mainHeading">将鼠标移入此标题区域</h1>
    <div id="hintMsg" style="color:#2471a3;font-weight:bold;"></div>

    <script>
        $(document).ready(function(){
            $("#mainHeading").mouseenter(function(){
                $("div").text("鼠标已进入标题区域").show().fadeOut(2000);
            });
        });
    </script>
</body>
</html>

鼠标指针从标题外面滑进标题区域的一瞬间,提示文字出现并渐隐。再从外面滑进来一次,提示又会出现。这个简单的反馈机制在很多场景下都能套用——菜单展开、工具提示、图片预览等。

进阶示例:mouseenter 和 mouseleave 配合使用

下面这个例子更接近日常开发的实际用法。段落元素在鼠标进入时变绿色,鼠标离开时恢复黄颜色,形成悬停高亮效果。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>mouseenter 与 mouseleave 配合示例</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
    <p style="padding:12px;cursor:pointer;">将鼠标移入和移出这段文字</p>

    <script>
        $(document).ready(function(){
            $("p").mouseenter(function(){
                $("p").css("background-color", "#a9dfbf");
            });
            $("p").mouseleave(function(){
                $("p").css("background-color", "#f9e79f");
            });
        });
    </script>
</body>
</html>

这个例子虽然样式简单,但 mouseenter + mouseleave 的组合模式在项目中几乎无处不在——导航菜单的下拉、卡片的浮起效果、按钮的状态切换,背后都是这两个事件在配合工作。

mouseenter 和 mouseover 的区别

这是鼠标事件中比较容易混淆的一对。两者都是在鼠标进入元素时触发,但行为有一个关键差异:事件冒泡的处理方式不同

  • mouseenter 不会冒泡。鼠标从父元素移动到子元素时,父元素的 mouseenter 不会再次触发。

  • mouseover 会冒泡。鼠标从父元素进入子元素时,父元素的 mouseover 会被触发一次(因为子元素的 mouseover 冒泡上来了)。

这个差异在包含嵌套结构的元素上表现得很明显。假设一个 div 里面有个 span

<div id="outer" style="padding:20px;background:#eee;">
    <span id="inner" style="padding:10px;background:#ccc;">内层文字</span>
</div>

给外层 div 绑 mouseover,鼠标从 div 移到 span 上时,mouseover 会再触发一次。而绑 mouseenter 的话,只要鼠标没有离开 div 的范围,mouseenter 只会在第一次进入时触发一次。

日常开发中,大多数悬停效果用 mouseenter/mouseleave 就够了,行为更符合直觉,不会有因为嵌套子元素导致的反复触发问题。只有在确实需要利用冒泡机制来做事件委托时才用 mouseover/mouseout

本节课程知识要点

  • mouseenter() 在鼠标指针进入元素边界时触发,通常与 mouseleave() 成对使用实现悬停效果。

  • mouseenter 不会冒泡,鼠标在元素内部移动到子元素上时不会重复触发。

  • 与 mouseover 的核心区别在于冒泡行为:mouseenter 不冒泡,mouseover 会冒泡。

  • 大多数鼠标悬停交互场景推荐使用 mouseenter/mouseleave 组合,逻辑更清晰。

  • 配合 CSS 过渡效果使用能实现流畅的悬停状态切换,但涉及样式变化的悬停更推荐直接用 CSS 的 :hover 伪类,JS 处理的是需要执行逻辑的场景。

mouseenter() 是鼠标事件体系里负责“进入”环节的方法。它和 mouseleave() 配对使用,构成了经典的鼠标悬停交互模式。理解它和 mouseover 在事件冒泡上的差异,能帮助在开发中做出更合适的选择——简单悬停用 mouseenter,需要事件委托或利用冒泡机制时考虑 mouseover。鼠标事件的方法还在继续,下一篇接着讲 mouseleave()

← jQuery keyup()事件:按键松开时的处理 jQuery mouseleave()事件:鼠标离开元素时触发 →
分享笔记 (共有 篇笔记)
验证码:
微信公众号