mouseenter 与 mouseover 的不同

mouseenter 与 mouseover 的不同

一、前言

其实之前就有听说过这两个属性差不多,但是因为没用到,所以就没去深入理解,但是,今天在一个项目里边用到mouseover()这个函数,所以,查了一下w3c,文档里讲到mouseover的时候,还特地区分了它跟mouseenter的区别,所以,在这里,我也做一下笔记吧。

二、mouseenter 与 mouseover 的不同

1、mouseover() 方法

当鼠标指针位于元素上方时时,改变元素的背景色:

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("p").mouseover(function(){
$("p").css("background-color","#8ED1FF");
});
$("p").mouseout(function(){
$("p").css("background-color","#E9E9E4");
});
});
</script>
</head>
<body>
<p style="background-color:#E9E9E4">你把鼠标指针移动到我身上试一下。</p>
</body>
</html>

效果图:

A、鼠标移动到标签p上之前:

B、鼠标移动到标签p上之后:

2、定义和用法

当鼠标指针位于元素上方时,会发生 mouseover 事件。

该事件大多数时候会与 mouseout 事件一起使用。

mouseover() 方法触发 mouseover 事件,或规定当发生 mouseover 事件时运行的函数。

注释:与 mouseenter 事件不同,不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

3、mouseenter 与 mouseover 的不同的实例

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
x=0;
y=0;
$(document).ready(function(){
  $("div.over").mouseover(function(){
    $(".over span").text(x+=1);
  });
  $("div.enter").mouseenter(function(){
    $(".enter span").text(y+=1);
  });
});
</script>
</head>
<body>
<p>不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。</p>
<p>只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。</p>
<div class="over" style="background-color:lightgray;padding:20px;width:40%;float:left">
<h2 style="background-color:white;">被触发的 Mouseover 事件:<span></span></h2>
</div>
<div class="enter" style="background-color:lightgray;padding:20px;width:40%;float:right">
<h2 style="background-color:white;">被触发的 Mouseenter 事件:<span></span></h2>
</div>
</body>
</html>

效果图如下:

A、这个是未触发任何效果之前的显示结果:

B、这个是触发后的显示结果:

4、总结

1、mouseover()的就是不管你把鼠标指针放在白色的被选元素上,还是灰色的子元素上,里边的数字都会+1,也就是说都会触发mouseover事件。

2、而mouseenter()是当你把鼠标指针放在白色的被选元素上,才会使里边的数字+1,也就是这样才会触发mouseenter事件。若仅仅是把鼠标移动到灰色的子元素上,是不会触发mouseenter事件的。

3、不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。