• mouseover、mouseout和mouseenter、mouseleave


    这里直接把《Javascript 高级程序设计(第三版)》中的解释贴出来:

    1. mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发。不能通过键盘触发这个事件。
    2. mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发。又移入的另一个元素可能位于前一个元素的外部,也可能是这个元素的子元素。不能通过键盘触发这个事件。
    3. mouseenter:在鼠标光标从元素外部首次移动到元素范围之内时触发。这个事件不冒泡,而且在光标移动到后代元素上时不会触发。
    4. 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>
  • 相关阅读:
    预分频之三
    MySQL超时配置
    随机森林深入理解
    决策树算法——ID3
    指数平滑法
    最小二乘法的Java实现
    JS实战
    CSS布局实战
    Win7 Python开发环境搭建
    神经网络正向传播与反向传播公式
  • 原文地址:https://www.cnblogs.com/fogwind/p/6361494.html
Copyright © 2020-2023  润新知