mouseleave()
为 mouse leaves(鼠标离开)事件绑定一个处理函数,或者触发元素上的 mouse leaves(鼠标离开)事件。
.mouseleave(handler(eventObject))
- handler(eventObject)类型:Function()。每次事件触发时会执行的函数。
.mouseleave([eventData ], handler(eventObject))
- eventData类型: PlainObject。一个对象,它包含的数据键值对映射将被传递给事件处理程序。
- handler(eventObject)类型:Function()。每次事件触发时会执行的函数。
.mouseleave()
- 这个方法不接受任何参数。
这个方法的前两个用法是.bind('mouseleave', handler)的快捷方式,第3个不带参数的用法是.trigger('mouseleave')的快捷方式。
mouseleaveJavaScript事件是Internet Explorer专有的。。由于该事件在平时很有用,jQuery的模拟这一事件,以便它可用于所有浏览器。该事件在鼠标离开元素上时被触发。任何HTML元素都可以接受此事件。
举例来说,请看下面的HTML:
<div id="outer">
Outer
<div id="inner">
Inner
</div>
</div>
<div id="other">
Trigger the handler
</div>
<div id="log"></div>
这个事件可以绑定到任何元素:
$('#outer').mouseleave(function () {
$('#log').append('<div>Handler for .mouseleave() called.</div>');
});
现在当指针在Outer <div>元素上移出时,Handler for .mousedown()called.将被添加到<div id="log">。我们也可以通过点击其它元素,手动触发另一个元素上的该事件:
$('#other').click(function () {
$('#outer').mouseleave();
});
这些代码执行后,点击Trigger the handler同样警报显示。
mouseleave事件和mouseover的不同之处是事件的冒泡的方式。如果mouseover在这个例子中使用了,然后当鼠标指针在Inner元素上移出,该处理程序将被触发。这通常是不受欢迎的行为。另一方面,mouseleave事件只会在绑定它的元素上被调用,而不会在后代节点上被触发。因此,在这个例子中,当鼠标离开Outer元素,而不是Inner元素时,处理器才会被触发。
Additional Notes(其他注意事项):
.mouseleave()方法只是作为.on("mouseleave", handler)的一个速记写法,移除该事件可以使用.off("mouseleave")。
例子
当触发 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="https://www.lanmper.cn/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").mouseover(function (){
$("p:first",this ).text("mouse over");
}).mouseout(function (){
$("p:first",this ).text("mouse out");
$("p:last",this ).text(++i);
});
var n = 0;
$("div.enterleave").mouseenter(function (){
$("p:first",this ).text("mouse enter");
}).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
