一、 mouseover 和mouseenter的区别
mouseover: 只要鼠标指针移入事件所绑定的元素或其子元素,都会触发该事件
mouseenter: 只有鼠标指针移入事件所绑定的元素时,才会触发该事件
简单来说:
1、mouseover和mouseout会有事件冒泡,也就是说鼠标移入、移出当前元素的子元素或父元素时都会触发该事件。
2、mouseenter和mouseleave 事件不会冒泡,依旧是说鼠标移入、移出时,该元素的子元素或父元素不会触发该事件。
二、事件传播的机制(冒泡和捕获)
事件捕获(event capturing):当鼠标点击或者触发dom事件时,浏览器会从根节点开始由外到内进行事件传播,即点击了子元素,如果父元素通过事件捕获方式注册了对应的事件的话,会先触发父元素绑定的事件。
事件冒泡(dubbed bubbling):与事件捕获恰恰相反,事件冒泡顺序是由内到外进行事件传播,直到根节点
对于addEventListener的说明:
addEventListener("没有on的事件类型","事件处理函数","控制事件阶段") 事件控制阶段中 :
false:冒泡阶段 true:捕获阶段 e.eventPhase 判断事件阶段(冒泡和捕获不能同时出现)
三、阻止事件的传播
在W3c中,使用stopPropagation()方法
在IE下设置cancelBubble = true;
在捕获的过程中stopPropagation();后,后面的冒泡过程也不会发生了~