mouseout 事件


將事件處理常式繫結到「mouseout」事件,或在元素上觸發該事件。

.on( "mouseout" [, eventData ], handler )傳回:jQuery

說明:將事件處理常式繫結到「mouseout」事件。

此頁面說明 mouseout 事件。如需已棄用的 .mouseout() 方法,請參閱 .mouseout()

當滑鼠指標離開元素時,mouseout 事件會傳送至元素。任何 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( "mouseout", function() {
$( "#log" ).append( "Handler for `mouseout` called." );
} );

現在當滑鼠指標移出 Outer <div> 時,訊息會附加至 <div id="log">。若要手動觸發事件,請使用 .trigger( "mouseout" )

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

此程式碼執行後,按一下 觸發處理常式 也會附加訊息。

此事件類型可能會因為事件冒泡而造成許多問題。例如,當滑鼠指標移出此範例中的 Inner 元素時,mouseout 事件會傳送至該元素,然後傳遞至 Outer。這可能會在不適當的時間觸發繫結的 mouseout 處理常式。請參閱 .mouseleave() 的討論,以取得有用的替代方案。

範例

顯示觸發 mouseout 和 mouseleave 事件的次數。當指標移出子元素時,mouseout 會觸發,而 mouseleave 僅在指標移出繫結元素時觸發。

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.jquery.com/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( "mouseout", function() {
$( "p", this ).first().text( "mouse out" );
$( "p", this ).last().text( ++i );
} )
.on( "mouseover", function() {
$( "p", this ).first().text( "mouse over" );
} );
var n = 0;
$( "div.enterleave" )
.on( "mouseenter", function() {
$( "p", this ).first().text( "mouse enter" );
} )
.on( "mouseleave", function() {
$( "p", this ).first().text( "mouse leave" );
$( "p", this ).last().text( ++n );
} );
</script>
</body>
</html>

示範