欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

鼠标悬停和鼠标移出事件中的小错误。

最编程 2024-05-23 10:48:33
...

首先补充个知识点:在发生mouseover和mouseout事件时,都会涉及把鼠标从一个元素的边界之内移到另一个元素边界之内。
对mouseover事件而言,事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素;类似地,对mouseout事件而言,事件的主目标是失去光标的元素,而相关元素则是获得光标的元素。
DOM通过event对象的relatedTarget属性提供了相关元素的信息。这个属性只对于mouseover和mouseout事件才包含值;对于其他事件,这个属性的值是null。 IE不支持realtedTarget属性,但提供了保存着同样信息的不同属性。在mouseover事件触发时,IE的fromElement属性中保存了相关元素;在mouseout事件触发时,IE的toElement属性中保存着相关元素。
obj.contains()方法,返回true或者false,当obj集合中含有特定元素或对象时返回true。
页面布局如下:

<div id="div1">  
    <h2 id="h2">我是H2</h2>
</div>

js代码如下:

window.onload = function (){   
     var oDiv = document.getElementById('div1');  
      oDiv.onmouseover = function (ev){     
             var oEvent = ev || event;    
             var from = oEvent.fromElement || oEvent.relatedTarget;   
             console.log(this);   
            if(this.contains(from)) return;     
             alert('移入div了');  
       };   
       oDiv.onmouseout = function (ev) {   
            var oEvent = ev || event;     
           var to = oEvent.toElement || oEvent.relatedTarget;       
           if(this.contains(to)) return;      
            alert('移除div1了'); 
       };
  };

展示效果:

给div加一个mouseover事件和一个mouseout事件,当鼠标在div内移入h2中(由于h2是div的子级,冒泡机制,h2移入时也会触发div的mouseover事件);当鼠标从h2移出时,相当了从div移出,所以会触发div的mouseout事件(判断去哪)