mouseover/out和mouseenter/leave的区别及用法

来源:互联网 发布:银联数据是外包公司吗 编辑:程序博客网 时间:2024/06/08 17:18

    

     今天在做下拉菜单练习时发现一些奇怪的问题,就是当用mouseover和mouseout时,当鼠标移动到下拉菜单时容易出现闪动,最后经过查资料发现

      mouseover:无论鼠标指针穿过被选元素还是任何的子元素,都会触发mouseover事件,而mouseenter只有在鼠标指针穿过被选元素时,才会触发mouseenter事件;

      mouseout : 无论鼠标指针离开被选元素还是任何子元素,都会触发mouseout事件,而mouseleave只有在鼠标指针离开被选元素的时候,才触发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="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $(".topnav").mouseenter(function(){
        
        $(this).find("ul").slideDown("slow");
        }).mouseleave(function(){
            $(this).find("ul").slideUp("slow");
            })
    })
</script>
<style type="text/css">
*{ margin:0; padding:0;}
body{ font-size:12px;}
.menu{ width:980px; margin:50px auto;}
.menu .topnav{ float:left; border-right:1px solid #fff; background:#FFE60C; width:140px;}
.menu .topnav ul{ display:none;}
.menu .topnav ul li{ border-bottom:1px solid #fff;}
.menu  ul{ list-style:none; }
.menu li a{ color:#000; line-height:32px; padding:0 20px; width:100px; display:block; text-decoration:none;}
.menu li a:hover{color:#fff; text-decoration:none; background:#062723 url(images/slide-panel_03.png) 0 0 repeat-x;}

</style>
</head>

<body>
<div class="menu">
<ul class="level">
  <li class="topnav"><a href="">do touch me</a>
  <ul id="sub_01">
    <li><a href="#">JavaScript</a></li>
    <li><a href="#">jQuery</a></li>
    <li><a href="#">slideUp</a></li>
    <li><a href="#">slideDown</a></li>
    <li><a href="#">up and down</a></li>
    <li><a href="#">animate</a></li>
    </ul>
  </li>
   <li class="topnav"><a href="">do touch me</a>
  <ul id="sub_01">
    <li><a href="#">JavaScript</a></li>
    <li><a href="#">jQuery</a></li>
    <li><a href="#">slideUp</a></li>
    <li><a href="#">slideDown</a></li>
    <li><a href="#">up and down</a></li>
    <li><a href="#">animate</a></li>
    </ul>
  </li>
   <li class="topnav"><a href="">do touch me</a>
  <ul id="sub_01">
    <li><a href="#">JavaScript</a></li>
    <li><a href="#">jQuery</a></li>
    <li><a href="#">slideUp</a></li>
    <li><a href="#">slideDown</a></li>
    <li><a href="#">up and down</a></li>
    <li><a href="#">animate</a></li>
    </ul>
  </li>
   <li class="topnav"><a href="">do touch me</a>
  <ul id="sub_01">
    <li><a href="#">JavaScript</a></li>
    <li><a href="#">jQuery</a></li>
    <li><a href="#">slideUp</a></li>
    <li><a href="#">slideDown</a></li>
    <li><a href="#">up and down</a></li>
    <li><a href="#">animate</a></li>
    </ul>
  </li>
   <li class="topnav"><a href="">do touch me</a>
  <ul id="sub_01">
    <li><a href="#">JavaScript</a></li>
    <li><a href="#">jQuery</a></li>
    <li><a href="#">slideUp</a></li>
    <li><a href="#">slideDown</a></li>
    <li><a href="#">up and down</a></li>
    <li><a href="#">animate</a></li>
    </ul>
  </li>
</ul>
</div>
</body>
</html>

当用mouseover和mouseout时,js代码如下



  <script type="text/javascript">
$(document).ready(function(){
    $(".topnav").mouseover(function(){
        
        $(this).find("ul").slideDown("slow");
        }).mouseout(function(){
            $(this).find("ul").slideUp("slow");
            })
    })
</script>