mouseout()

为 JavaScript 的"mouseout"事件绑定一个处理函数,或者触发元素上的该事件。(注:支持事件冒泡)

.mouseout(handler(eventObject))
  • handler(eventObject) 类型:Function() 。每次事件触发时会执行的函数。
.mouseout([eventData ], handler(eventObject))
  • eventData 类型: PlainObject 。一个对象,它包含的数据键值对映射将被传递给事件处理程序。
  • handler(eventObject) 类型:Function() 。每次事件触发时会执行的函数。
.mouseout()
  • 这个方法不接受任何参数。

这个方法的前两个用法是 .bind('mouseout', handler) 的快捷方式,第3个不带参数的用法是 .trigger('mouseout') 的快捷方式。

当鼠标指针离开元素时, mouseout 事件就会被触发,任何HTML元素都可以接受此事件。

举例来说,请看下面的HTML:

<div id="outer">
  Outer
  <div id="inner">
    Inner
  </div>
</div>
<div id="other">
  Trigger the handler
</div>
<div id="log"></div>

这个事件可以绑定到任何元素:

$('#outer').mouseout(function() {
  $('#log').append('Handler for .mouseout() called.');
});

现在当指针在Outer <div> 元素上移出时,“Handler for .mousedown()called.”这个字符串将被添加到 <div id="log"> 。我们可以调用不带参数的 .mouseout() 方法,手动触发这个事件:

$('#other').click(function() {
  $('#outer').mouseout();
});

这些代码执行后,点击Trigger the handler 同样添加这个信息。

由于此事件类型冒泡,可能导致引起的很多头痛的问题。例如,在这个例子中当鼠标指针移出Inner元素, mouseout 事件将被发送到Inner元素,然后冒泡到Outer元素。这可能会不合时宜的触发绑定的 mouseout 处理函数。这可以用一个替代方法,见讨论 . mouseleave()

Outer
Inner
Trigger the handler

Additional Notes(其他注意事项):

  • .mouseout() 方法只是作为 .on("mouseout", handler) 的一个速记写法,移除该事件可以使用 .off("mouseout")

例子

当触发 mouseout 和 mouseleave 事件时,显示鼠标移出对象的次数。当鼠标移出绑定 mouseout 事件元素的子元素时,mouseout 事件同样会被触发。但是,只有在绑定 mouseleave 事件的元素上,将鼠标移出时,才会触发该事件。

<!DOCTYPE html>
<html>
<head>
  <style>
div.out {
width:40%;
height:120px;
margin:0 15px;
background-color:#D6EDFC;
float:left;
}
div.in {
width:60%;
height:60%;
background-color:#FFCC00;
margin:10px auto;
}
p {
line-height:1em;
margin:0;
padding:0;
}
</style>
  <script src="./static/js/jquery-3.5.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").mouseout(function(){
  $("p:first",this).text("mouse out");
  $("p:last",this).text(++i);
}).mouseover(function(){
  $("p:first",this).text("mouse over");
});
 
var n = 0;
$("div.enterleave").bind("mouseenter",function(){
  $("p:first",this).text("mouse enter");
}).bind("mouseleave",function(){
  $("p:first",this).text("mouse leave");
  $("p:last",this).text(++n);
});
 
</script>
 
</body>
</html>

move your mouse

move your mouse

0

0

move your mouse

move your mouse

0

0

上篇: mouseover()

下篇: mousedown()