mouseover与mouseenter区别
学习笔记。
mouseover:在鼠标移入元素本身或者子元素时都会触发事件,相当于有一个冒泡过程。而且在鼠标移入子元素中时,父元素会显示离开的状态;相应的,当鼠标从子元素移入父元素,子元素也会显示离开状态。与之相对应的是“mouseout”。
mouseenter:仅在鼠标移入元素本身才会触发事件,移入子元素并不会触发事件,相当于没有冒泡过程。与之相对应的是“mouseleave”。
举个例子:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.12.3.js"></script>
<style>
#div1 {
float: left;
margin: 20px;
width: 200px;
height: 200px;
background-color: red;
}
#div2 {
width: 50px;
height: 50px;
background-color: yellow
}
#div3 {
float: left;
margin: 20px;
width: 200px;
height: 200px;
background-color: blueviolet;
}
#div4 {
width: 50px;
height: 50px;
background-color: aqua;
}
</style>
<script>
$(function(){
$("#div1")
.mouseover(function(){
console.log("进入div1");
})
.mouseout(function(){
console.log("离开div1");
})
$("#div3")
.mouseenter(function(){
console.log("进入div3");
})
.mouseleave(function(){
console.log("离开div3");
})
})
</script>
</head>
<body>
<div id="div1">
div1
<div id="div2">
div2
</div>
</div>
<div id="div3">
div3
<div id="div4">
div4
</div>
</div>
</body>
</html>
运行如上代码会得到如下结果:

在后面的测试中将以“
“来表示鼠标位置。
接下来让我们测试左边的div(mouseover):
1.进入div1:

2、进入div1的子元素div2:

3.离开子元素div2:

4.离开div1:

我们可以很明显的看到:
当鼠标从div1移到子元素div2时,输出了“离开div1”,证明:鼠标移入子元素时,父元素会显示离开状态。
当鼠标从div2移到子元素div1时,也输出了“离开div1”,证明:鼠标移入父元素时,子元素也会显示离开状态。
接下来测试右边的div(mouseenter):
1.进入div3:

2。进入div3的子元素div4:

3.离开子元素div4:

4。离开div3:

可以看到,仅在移入元素本身才会触发其事件,移入子元素并不会触发事件。

浙公网安备 33010602011771号