概述 .mouseleave( handler(eventObject) )
返回值:jQuery
描述:为 mouse leaves(鼠标离开) 事件绑定一个处理函数,或者触发元素上的 mouse leaves(鼠标离开) 事件。
这个方法的前两个用法是 .bind('mouseleave', handler)
的快捷方式,第3个不带参数的用法是 .trigger('mouseleave')
的快捷方式。
mouseleave
JavaScript事件是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元素时,处理器才会被触发。
.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="http://code.jquery.com/jquery-latest.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>