# 解释下什么是 Event Bubbling (事件冒泡) 以及如何避免
- 指某个事件不仅会触发当前元素,还会以嵌套顺序传递到父元素中。
即某个子元素的点击事件会被父元素的点击事件处理器捕获。
# 解决方法
if(ev && ev.stopPropagation) {
// 非IE浏览器
ev.stopPropagation();
} else {
// IE浏览器(IE11以下)
ev.cancelBubble = true;
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 事件冒泡和事件捕获
- 事件捕获 事件首先由最外层的元素捕获,然后传播到最内层元素
假设单击事件发生在li元素中,在这种情况下,捕获事件将首先处理div,然后处理ul,最后命中目标元素li
<div>
<ul>
<li>
</li>
</ul>
</div>
1
2
3
4
5
6
2
3
4
5
6
- 事件冒泡 事件由最内部元素处理,然后传播到外部元素
假设click事件确实发生在冒泡模型中的li元素中,该事件将首先由li处理,然后由ul处理,最后由div元素处理。
← 内存泄漏 响应式布局 兼容不同分辨率 →