您的位置:首页> 前端教程> JS教程
文章导航

JavaScript mouseleave 事件

2019-2-21 11:23| 作者: admin| 查看: 948| 评论: 0|来自: 蚂蚁部落

事件名称是一个合成词,由如下两个单词构成:

(1).mouse:翻译成汉语具有"鼠标"的意思。

(2).leave:翻译成汉语具有"离开"的意思。

顾名思义,此事件是在当鼠标指针离开指定元素的时候触发,与mouseenter事件对应。

关于如何注册事件处理函数可以参阅JavaScript 注册事件处理函数一章节。

与此事件类似的是mouseout事件,从名称看也是当鼠标指针离开指定元素触发。

当然两个事件是有区别的,本文不做介绍,具体参阅mouseout与mouseleave区别一章节。

首先总结一下此事件的主要特点,最后通过代码实例进行演示:

(1).不支持事件冒泡现象。

(2).鼠标指针从子元素移出至当前元素,事件不会触发,由不支持冒泡现象决定。

(3).鼠标指针从当前元素移动至其子元素,事件不会触发。

(4).鼠标指针从当前元素移出,事件触发。

总结:只有当鼠标指针完全移出当前元素,事件才会触发。

浏览器支持:

(1).IE浏览器支持此事件。

(2).edge浏览器支持此事件。

(3).火狐浏览器支持此事件。

(4).Opera浏览器支持此事件。

(5).谷歌浏览器支持此事件。

(6).safria浏览器支持此事件。

代码实例如下:

[HTML] 纯文本查看 复制代码运行代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style>
div{
    width:150px;
    height:60px;
    line-height:60px;
    text-align: center;
    background-color: #ccc;
}
</style>
<script>
window.onload=function(){
    let odiv=document.querySelector("div");
    odiv.onmouseleave=function(){
        this.innerHTML="蚂蚁部落";
    }
}
</script>  
</head>
<body> 
  <div></div>
</body>
</html>

上述代码演示了此事件的基本功能,当鼠标离开div元素,触发事件,然后将字符串写入其中。

[HTML] 纯文本查看 复制代码运行代码
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style>
#outer{
    width:200px;
    height:150px;
    background-color: green;
    margin:60px;
    overflow: hidden;
}
#inner{
    width:75px;
    height:50px;
    text-align: center;
    line-height: 50px;
    background-color: #ccc;
    margin:30px;
}
</style>
<script>
window.onload=function(){
    let outer=document.querySelector("#outer");
    let inner=document.querySelector("#inner");
    outer.onmouseleave=function(){
        inner.innerHTML="蚂蚁部落";
    }
}
</script>  
</head>
<body> 
  <div id="outer">
      <div id="inner"></div>
  </div>
</body>
</html>

上述代码示意图如下:

a:3:{s:3:\"pic\";s:43:\"portal/201902/21/112444xmjfmm8mhwwzumnt.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

代码分析如下:

(1).上述代码为了演示冒泡现象,两个div进行父子嵌套。

(2).关于事件冒泡现象原理可以参阅JavaScript 事件冒泡一章节。

(3).当鼠标指针从灰色子div移入到绿色父div中时,事件并没有触发,因为并没有字符串的写入操作。

(4).这个现象证明了此事件并不支持事件冒泡。

当鼠标指针从绿色父元素移动到灰色子元素的时候,事件不会触发,这一点与mouseout事件不同。

总结如下:

此事件触发的唯一条件就是,鼠标指针从当前元素完全移出才会触发。

什么乱七八糟的,鼠标指针从子元素移出,从父元素再移动到子元素都不会触发事件。

根据此事件的主要特点,我们就可以将其应用于更为恰当的场景中,比如仅仅是为了检测鼠标指针离开当前元素的相关事件,并不希望受到其他因素的影响,比如由于事件冒泡现象导致鼠标指针从子元素移出也会触发事件,mouseleave 事件不支持事件冒泡,所以此干扰就会被排除,类似要求下,与mouseout事件相比,mouseleave 是一个更好的选择。


鲜花

握手

雷人

路过

鸡蛋

最新评论

返回顶部