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是成对对应的, ...
随机推荐
- python分段算利润、税收
''' 题目:企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: 2 ...
- 如何编写一个python项目
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397616003925a ...
- android qq开合表
qq悬浮列表功能暂未实现 main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andr ...
- java-mybaits-00101-基础安装配制
一.数据库安装 http://jingyan.baidu.com/article/363872ec2e27076e4ba16fc3.html 二.eclipse连接mysql http://jingy ...
- 两个栈实现队列&两个栈实现队列
为说明思想,假设队列.栈都很大,不会出现满的情况. 1. 两个栈实现队列 //前提已知: struct Stack { int top; //栈顶指针 int stacksize;//栈的大小 int ...
- 数值积分:基于牛顿-柯茨公式的定步长和自适应积分方法 [MATLAB]
#先上代码后补笔记# #可以直接复制粘贴使用的MATLAB函数!# 1. 定步长牛顿-柯茨积分公式 function [ integration ] = CompoInt( func, left, r ...
- poj2954 Triangle
地址:http://poj.org/problem?id=2954 题目: Triangle Time Limit: 1000MS Memory Limit: 65536K Total Submi ...
- supervisor安装及其配置
一.supervisor概述 supervisor是一个c/s系统,被用来在类Unix系统中监控进程状态.supervisor使用python开发. 服务端进程为supervisord,主要负责启动自 ...
- RESTful源码学习笔记之RPC和Restful深入理解
以下资料搜集自网络 0x00 RPC RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法).通常的实现 ...
- STM32端口输入输出模式配置
STM32的IO口模式配置 根据数据手册提供的信息,stm32的io口一共有八种模式,他们分别是: 四种输入模式 上拉输入:通过内部的上拉电阻将一个不确定的信号通过一个电阻拉到高电平. 下拉输入:把电 ...