mouseenter 和 mouseleave 不支持冒泡
mouseover 和 mouseout 支持冒泡
mouseover与mouseenter
不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。
只有在鼠标指针从元素外穿入被选元素(到元素内)时,才会触发 mouseenter 事件。
mouseout与mouseleave
不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
只有在鼠标指针从元素内穿出被选元素(到元素外)时,才会触发 mouseleave 事件。
mouseover和mouseout 事件包含有event 对象的relatedTarget 属性的值
<!DOCTYPE html>
<html>
<head>
<title>Related Elements Example</title>
</head>
<body>
<div id="myDiv" style="background-color:red;height:100px;width:100px;"></div>
</body>
</html>
这个例子会在页面上显示一个<div>
元素。如果鼠标指针一开始位于这个<div>
元素上,然后移出了这个元素,那么就会在<div>
元素上触发mouseout事件,相关元素就是<body>
元素。与此同时,<body>
元素上面会触发mouseover 事件,而相关元素变成了<div>
。
DOM通过event 对象的relatedTarget 属性提供了相关元素的信息。这个属性只对于mouseover和mouseout 事件才包含值;对于其他事件,这个属性的值是null。IE8及之前版本不支持relatedTarget属性,但提供了保存着同样信息的不同属性。在mouseover 事件触发时,IE 的fromElement 属性中保存了相关元素;在mouseout 事件触发时,IE 的toElement 属性中保存着相关元素。(IE9 支持所有这些属性。)