jquery的hover mouseover mouseout mouseenter mouseleave的区别

时间:2023-07-31 08:41:01

jquery的hover mouseover mouseout mouseenter mouseleave的区别

1.mouseover mouseout

mouseover - 鼠标指针经过任何子元素都会触发绑定在父元素上的mouseover事件

mouseout - 鼠标指针离开任何子元素时都会触发父元素上的mouseover事件

然后,你把代码拷贝过去try一下,就会有更深刻的理解;

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script type="text/javascript">
$(function (){
var outer=$("#outer");
outer.mouseover(function (){
alert('outer mouseover');
}).mouseout(function (){
alert('outer mouseout');
})
//当子元素的over 和 out事件发生时,
//事件会冒泡到父级,也就是说outer上的 over 和 out 会被触发
var inner=$("#inner");
inner.mouseover(function (){
alert('inner mouseover');
}).mouseout(function (){
alert('inner mouseout');
})
}) </script>
<style type="text/css">
.outer{
height:100px;
width:20%;
background-color:green;
float:left;
margin-left:25px;
}
.inner{
height:50px;
width:60%;
margin:25px auto;
background-color:red;
}
</style>
</head> <body>
<div id="outer" class="outer">
<div id="inner" class="inner"></div>
</div>
</body>
</html>

2.mouseenter mouseleave

mouseenter - 鼠标指针经过绑定的元素时触发事件,经过其子元素时,不会触发事件

mouseleave - 只有当鼠标离开绑定的元素时才会触发该事件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript" src="script/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(function (){
var outer1=$("#outer1");
outer1.mouseenter(function (){
alert('outer1 mouseenter');
}).mouseleave(function (){
alert('outer1 mouseleave');
})
var inner1=$("#inner1");
inner1.mouseenter(function (){
alert('inner1 mouseenter');
}).mouseleave(function (){
alert('inner1 mouseleave');
})
}) </script>
<style type="text/css">
.outer{
height:100px;
width:20%;
background-color:green;
float:left;
margin-left:25px;
}
.inner{
height:50px;
width:60%;
margin:25px auto;
background-color:red;
}
</style>
</head> <body>
<div id="outer1" class="outer">
<div id="inner1" class="inner"></div>
</div>
</body>
</html>

houver:

hover!= mouseover+mouseout

hover=mouseenter + mouseleave

  $(function (){
//我们的hover是这样定义的;
hover: function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
})