前言:
相信很多人跟我一样,在入门js的时候会"滥用"onmouseenter与onmouseover,觉得二者好像没有什么区别,所以使用的时候就很随意,用谁完全看心情,二者事件都是在鼠标移动到元素上时触发~其实二者的是有些许差别的
区别:
onmouseenter 事件不支持冒泡
还有一个小区别就是 onmouseenter 与 onmouseleave 搭配使用, onmouseover 与 onmouseout 搭配使用
什么是事件冒泡?
事件冒泡: 多个元素嵌套,有层次关系,这些元素都注册了相同的事件,如果里面的元素的事件触发了,外面的元素的该事件自动的触发了。说的通俗点,比如说,父元素添加了onclick事件,当子元素发生onclick事件时,父元素的onclick事件也会触发。
做开发的宝宝们都知道,事件冒泡在很多时候对我们都有坏的影响,那如何阻止事件冒泡呢?有两个方法(我知道的):
- window.event.cancelBubble=true; IE特有,谷歌也支持,火狐不支持
- e.stopPropagation(); 只有IE不支持(e 事件处理参数对象)
例子:
onmouseenter:
鼠标过来!复制代码onmouseover:
鼠标过来!
结果:会发现,当把鼠标放到span处,onmouseenter下面的数字不会加1,而onmouseover会,可见onmouseover支持事件冒泡。