这里直接把《Javascript 高级程序设计(第三版)》中的解释贴出来:

  1. mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发。不能通过键盘触发这个事件。
  2. mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发。又移入的另一个元素可能位于前一个元素的外部,也可能是这个元素的子元素。不能通过键盘触发这个事件。
  3. mouseenter:在鼠标光标从元素外部首次移动到元素范围之内时触发。这个事件不冒泡,而且在光标移动到后代元素上时不会触发。
  4. mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发。这个事件不冒泡,而且在光标移动到后代元素上时不会触发。

由于mouseover和mouseout事件会冒泡,所以如果为一个元素添加了这两个事件,那么在该元素的后代元素上切换时会重复触发该元素的这两个事件(在项目中要注意)。如果在后代元素上阻止事件冒泡,那么鼠标指针移到后代元素上,相当于触发了该元素(祖先元素)的mouseout事件。

而mouseenter和mouseleave没有此行为。

注意:IE8及以下版本不支持DOM2级添加事件的方法。

例子:点我看在线演示(在控制台中查看)

<style type="text/css">
html,body{
height:100%;
}
body{
padding:100px;
}
div{
margin:auto;
}
#div1,#div4{
width:400px;
height:300px;
background-color: red;
}
#div4{
margin-top: 50px;
background-color: #2a3e5d;
}
#div2,#div5{
width:300px;
height:250px;
background-color: black;
}
#div3,#div6{
width:200px;
height:150px;
background-color: gold;
}
</style> <div id="div1">
<div id="div2">
<div id="div3"></div>
</div>
div1
</div>
<div id="div4">
<div id="div5">
<div id="div6"></div>
</div>
div4
</div>
<script type="text/javascript" >
(function(){
function get(id){
return document.getElementById(id);
}
var div1 = get('div1'), div2 = get('div2'), div3 = get('div3');
div1.count = 0;
div1.addEventListener('mouseenter', function() {
this.style.backgroundColor = "pink";
div1.count++;
console.log('div1.count: '+div1.count);
}, false);
div1.addEventListener('mouseleave', function() {
this.style.backgroundColor = "green";
div1.count--;
console.log('div1.count: '+div1.count);
}, false); var div4 = get('div4'), div5 = get('div5'), div6 = get('div6');
div4.count = 0;
div4.addEventListener('mouseover', function() {
this.style.backgroundColor = "blue";
div4.count++;
console.log('div4.count: '+div4.count);
}, false);
div4.addEventListener('mouseout', function() {
this.style.backgroundColor = "gray";
div4.count--;
console.log('div4.count: '+div4.count);
}, false);
})();
</script>

mouseover、mouseout和mouseenter、mouseleave的更多相关文章

  1. mouseover,mouseout和mouseenter,mouseleave的区别及适用情况

    在做类似于百度地图右下角,不同地图切换UI时,遇到了问题. 就是鼠标滑过的时候出现一个层,当鼠标滑到当前层的话mouseover和mouseout在低版本的浏览器会出现闪动的现象,最简单的那就是把mo ...

  2. mouseover&mouseout和mouseenter&mouseleave

    mouseenter&mouseleave: 进入被选元素触发,进入被选元素的子元素不会重复触发. mouseover&mouseout: 进入被选元素触发,从被选元素进入其子元素会再 ...

  3. mouseover,mouseout和mouseenter,mouseleave

    mouseover和mouseout 鼠标指针进入或者离开被选元素或其子元素,都会触发相应事件. 非IE浏览器支持该事件. mouseenter和mouseleave 只有在鼠标指针进入或者离开被选元 ...

  4. MouseOver/MouseOut vs MouseEnter/MouseLeave

    参考 http://www.oschina.net/question/234345_45280 这是jQuery提供的函数 要注意MouseOut 和 MouseLeave的区别 比如对元素A绑定Mo ...

  5. jquery的hover mouseover mouseout mouseenter mouseleave的区别

    jquery的hover mouseover mouseout mouseenter mouseleave的区别 1.mouseover mouseout mouseover - 鼠标指针经过任何子元 ...

  6. jQuery mouseover,mouseout事件多次执行的问题处理

    控制鼠标移上移下事件,在使用Jquery 的mouseover,mouseout事件时,元素内部含有其它元素,会造成该事件多次的触发的情况. 问题解析 在用到mouseover和mouseout事件来 ...

  7. mouseover,mouseout,mouseenter,mouseleave的区别

    相信做前端开发的都听说过“冒泡型事件”吧,<JavaScript高级程序设计>第九章有详细的讲述,但是,在学习的时候一知半解,也没详细去理解,导致最近在工作中碰到了问题:有许多 li 标签 ...

  8. 关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别

    轮播中大多会选择mouseover和mouseout  这个时候是没有任何问题的 但当遇到有css3动画的时候,会发现移入移出过快 动画还没加载完成就需要执行下一个动画,完了动画样式就错乱了. 这时候 ...

  9. mouseover,mouseout与mouseenter,mouseleave

    针对单个元素,使用感一样. 差异提现在有子元素的情况下: mouseover和mouseout在父元素和其子元素都可以触发,当鼠标穿过一个元素时,触发次数得依子元素数量而言. mouseenter和m ...

  10. 最终解决 mouseenter, mouseleave , mouseout mousehover mousemove等事件的区别?

    在jquery中, html页面的div的显示和隐藏, 修改等的功能, 最终都要由 事件 触发来引用, 不管是键盘事件, 还是鼠标事件... mouseenter和mouseleave是成对对应的, ...

随机推荐

  1. kafka详解

    一.基本概念 介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计. 这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语:Kafk ...

  2. tornado 入门

    Overview FriendFeed是一款使用 Python 编写的,相对简单的 非阻塞式 Web 服务器.其应用程序使用的 Web 框架看起来有些像 web.py 或者 Google 的 weba ...

  3. C# 复杂格式多级深度XML序列化反序列化

     default.xml 文件如下: <config><partnerships>  <partnership name="Main_Listener" ...

  4. centos远程访问mssql数据库

    http://blog.path8.net/archives/5921.html http://www.jaggerwang.net/2013/03/18/centos%E4%B8%8B%E5%AE% ...

  5. mssql语句递归查找所有下级

    if exists (select * from sys.all_objects where name='GetOrgTree') begin drop function GetOrgTree end ...

  6. pyDay8

    内容来自廖雪峰的官方网站. List Comprehensions 1 >>> list(range(1, 3)) [1, 2] 2 >>> L = [] > ...

  7. 20145204 《Java程序设计》第1周学习总结

    20145204 <Java程序设计>第1周学习总结 教材学习内容总结 本周经过不断的钻研课本,及看一些老师的视频,我对Java有了一个全新的认知.是的,Java和C都是一种语言,但是Ja ...

  8. 模块的封装之C语言类的封装

    [微知识]模块的封装(一):C语言类的封装 是的,你没有看错,我们要讨论的是C语言而不是C++语言中类的封装.在展开知识点之前,我首先要 重申两点: 1.面向对象是一种思想,基本与所用的语言是无关的. ...

  9. ubuntu 16.04下更换源和pip源【转】

    本文转载自:https://blog.csdn.net/weixin_41500849/article/details/80246221 写在前面的话 本文主要内容是更换系统源为清华大学源,更换pyt ...

  10. 使用SpringBoot发送邮件

    最后发送成功后,感觉SpringBoot真的很强大. http://www.ykmimi.com/email ↑待加入email输入的重载(可以不上传文件或可以不填写主内容) ↑待加入邮箱RegExp ...