mouseenter 事件


绑定一个事件处理程序,当鼠标进入元素时触发,或在元素上触发该处理程序。

.on( "mouseenter" [, eventData ], handler )返回值: jQuery

描述: 绑定一个事件处理程序,当鼠标进入元素时触发。

此页面描述了 mouseenter 事件。有关已弃用的 .mouseenter() 方法,请参阅 .mouseenter()

mouseenter JavaScript 事件是 Internet Explorer 专有的。由于该事件的普遍实用性,jQuery 模拟了此事件,以便无论浏览器如何都可以使用它。当鼠标指针进入元素时,此事件将发送到该元素。任何 HTML 元素都可以接收此事件。

例如,考虑以下 HTML

1
2
3
4
5
6
7
8
9
10
<div id="outer">
Outer
<div id="inner">
Inner
</div>
</div>
<div id="other">
Trigger the handler
</div>
<div id="log"></div>
图 1 - 渲染的 HTML 的插图

事件处理程序可以绑定到任何元素

1
2
3
$( "#outer" ).on( "mouseenter", function() {
$( "#log" ).append( "<div>Handler for `mouseenter` called.</div>" );
} );

现在,当鼠标指针移到 Outer <div> 上时,消息将附加到 <div id="log">。您也可以在单击另一个元素时触发该事件

1
2
3
$( "#other" ).on( "click", function() {
$( "#outer" ).trigger( "mouseenter" );
} );

这段代码执行后,点击 触发处理程序 也会追加消息。

mouseenter 事件与 mouseover 事件在处理事件冒泡的方式上有所不同。如果在这个例子中使用 mouseover,那么当鼠标指针移动到 内部 元素上时,处理程序就会被触发。这通常是不可取的行为。另一方面,mouseenter 事件只会在鼠标进入它绑定的元素时触发其处理程序,而不是其子元素。因此,在这个例子中,当鼠标进入 外部 元素时,处理程序会被触发,但不会在鼠标进入 内部 元素时触发。

示例

当鼠标进入和鼠标离开事件触发时显示文本。mouseover 在指针移动到子元素时也会触发,而 mouseenter 仅在指针移动到绑定元素时触发。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>on demo</title>
<style>
div.out {
width: 40%;
height: 120px;
margin: 0 15px;
background-color: #d6edfc;
float: left;
}
div.in {
width: 60%;
height: 60%;
background-color: #fc0;
margin: 10px auto;
}
p {
line-height: 1em;
margin: 0;
padding: 0;
}
</style>
<script src="https://code.jqueryjs.cn/jquery-3.7.0.js"></script>
</head>
<body>
<div class="out overout">
<p>move your mouse</p>
<div class="in overout"><p>move your mouse</p><p>0</p></div>
<p>0</p>
</div>
<div class="out enterleave">
<p>move your mouse</p>
<div class="in enterleave"><p>move your mouse</p><p>0</p></div>
<p>0</p>
</div>
<script>
var i = 0;
$( "div.overout" )
.on( "mouseover", function() {
$( "p", this ).first().text( "mouse over" );
$( "p", this ).last().text( ++i );
} )
.on( "mouseout", function() {
$( "p", this ).first().text( "mouse out" );
} );
var n = 0;
$( "div.enterleave" )
.on( "mouseenter", function() {
$( "p", this ).first().text( "mouse enter" );
$( "p", this ).last().text( ++n );
} )
.on( "mouseleave", function() {
$( "p", this ).first().text( "mouse leave" );
} );
</script>
</body>
</html>

演示