mouseover、mouseout和mouseenter、mouseleave
这里直接把《Javascript 高级程序设计(第三版)》中的解释贴出来:
- mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发。不能通过键盘触发这个事件。
- mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发。又移入的另一个元素可能位于前一个元素的外部,也可能是这个元素的子元素。不能通过键盘触发这个事件。
- mouseenter:在鼠标光标从元素外部首次移动到元素范围之内时触发。这个事件不冒泡,而且在光标移动到后代元素上时不会触发。
- 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的更多相关文章
- mouseover,mouseout和mouseenter,mouseleave的区别及适用情况
在做类似于百度地图右下角,不同地图切换UI时,遇到了问题. 就是鼠标滑过的时候出现一个层,当鼠标滑到当前层的话mouseover和mouseout在低版本的浏览器会出现闪动的现象,最简单的那就是把mo ...
- mouseover&mouseout和mouseenter&mouseleave
mouseenter&mouseleave: 进入被选元素触发,进入被选元素的子元素不会重复触发. mouseover&mouseout: 进入被选元素触发,从被选元素进入其子元素会再 ...
- mouseover,mouseout和mouseenter,mouseleave
mouseover和mouseout 鼠标指针进入或者离开被选元素或其子元素,都会触发相应事件. 非IE浏览器支持该事件. mouseenter和mouseleave 只有在鼠标指针进入或者离开被选元 ...
- MouseOver/MouseOut vs MouseEnter/MouseLeave
参考 http://www.oschina.net/question/234345_45280 这是jQuery提供的函数 要注意MouseOut 和 MouseLeave的区别 比如对元素A绑定Mo ...
- jquery的hover mouseover mouseout mouseenter mouseleave的区别
jquery的hover mouseover mouseout mouseenter mouseleave的区别 1.mouseover mouseout mouseover - 鼠标指针经过任何子元 ...
- jQuery mouseover,mouseout事件多次执行的问题处理
控制鼠标移上移下事件,在使用Jquery 的mouseover,mouseout事件时,元素内部含有其它元素,会造成该事件多次的触发的情况. 问题解析 在用到mouseover和mouseout事件来 ...
- mouseover,mouseout,mouseenter,mouseleave的区别
相信做前端开发的都听说过“冒泡型事件”吧,<JavaScript高级程序设计>第九章有详细的讲述,但是,在学习的时候一知半解,也没详细去理解,导致最近在工作中碰到了问题:有许多 li 标签 ...
- 关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
轮播中大多会选择mouseover和mouseout 这个时候是没有任何问题的 但当遇到有css3动画的时候,会发现移入移出过快 动画还没加载完成就需要执行下一个动画,完了动画样式就错乱了. 这时候 ...
- mouseover,mouseout与mouseenter,mouseleave
针对单个元素,使用感一样. 差异提现在有子元素的情况下: mouseover和mouseout在父元素和其子元素都可以触发,当鼠标穿过一个元素时,触发次数得依子元素数量而言. mouseenter和m ...
- 最终解决 mouseenter, mouseleave , mouseout mousehover mousemove等事件的区别?
在jquery中, html页面的div的显示和隐藏, 修改等的功能, 最终都要由 事件 触发来引用, 不管是键盘事件, 还是鼠标事件... mouseenter和mouseleave是成对对应的, ...
随机推荐
- React 教程
React 入门实例教程 http://www.ruanyifeng.com/blog/2015/03/react.html React 测试入门教程http://www.ruanyifeng.com ...
- python初识(二)
目录: 进制 基本数据类型 整形 布尔值 字符串 列表 元祖 字典 集合 range & enumerate 一.进制 二进制转换十进制计算: 十进制:==47 一个字节公式:==128 64 ...
- linux系统进入单用户模式
进入单用户模式可进行root账户和其他普通账户的密码的修改 1)Ubuntu 开机到grub时(在开机时长按shift键),用上下键移到第二行的恢复模式(recovery mode),按e(注意不是回 ...
- 3.3 Templates -- Conditionals(条件语句)
有时候你可能仅仅想展现模板的一部分,如果属性存在的话. 1. 我们可以使用{{if}}去有条件的渲染一块: {{#if person}} Welcome back, <b>{{person ...
- 4.3 Routing -- Generated Objects
就像在routing guide中介绍的那样,不管什么时候你在路由器中定义一个新路径,Ember.js就会尝试寻找一个对应的route,controller,template,它们的命名都是根据命名约 ...
- laravel 中间件排除
public function __construct(){ //除了主页之外 $this->middleware('auth', ['except' => ['index','show' ...
- smarty简单语法
什么是smarty及其安装 Smarty是一个php模板引擎,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法. Smarty要求web服务器运行php4.0.6和以上版本. smarty安装需 ...
- Python基础笔记之同时装了Python3和Python2,怎么在命令行使用pip
我们在安装Python3(>=3.3)时,Python的安装包实际上在系统中安装了一个启动器py.exe,默认放置在文件夹C:\Windows\下面.这个启动器允许我们指定使用Python2还是 ...
- 20145307陈俊达《网络对抗》逆向及Bof基础
20145307陈俊达<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...
- linux及安全《Linux内核设计与实现》第四章——20135227黄晓妍
第四章 进程调度 进程调度程序是一个内核子系统 分配有限的处理器时间和资源 最大限度利用时间的原则(只要有可执行的进程,那么总会有进程执行) 基本工作:从一组处于等待(阻塞)状态的可执行进程中选择一个 ...