鼠标悬停和鼠标移出事件中的小错误。
最编程
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事件(判断去哪)
推荐阅读
-
鼠标悬停事件详解:处理、委托和mouseover与mouseenter的区别
-
从零开始学Java桌面应用开发(11):深入理解javafx中的鼠标事件 - 点击、右键和双击操作
-
带您了解 JavaScript 中的键盘和鼠标事件
-
JavaScript 中的事件类型:常见键盘和鼠标事件
-
鼠标悬停和鼠标进入、鼠标移出和鼠标离开之间的区别 - 触发式探索
-
鼠标离开和鼠标移出的区别 深入了解 onmouseover 和 onmouseout 事件
-
jQuery 事件--鼠标悬停、鼠标移出、鼠标进入和鼠标离开
-
鼠标悬停、鼠标移出和鼠标进入、鼠标离开应用的比较
-
通过子元素实现鼠标移出和鼠标移入的 jQuery 事件
-
jQuery 鼠标事件:鼠标悬停和鼠标移出、鼠标进入和鼠标离开、鼠标悬停