在js的事件模型中,存在着两种不一样的处理方式,一总是捕获,一种是冒泡。早期的两种主流的浏览器Netscape和IE有不同的解决方案,IE采用的是事件冒泡的方法,而Netscape则是采用事件捕获的处理方法,区别如下图:
然后我们再来看看w3c中,对不同Event的定义规范:
从上面我们可以看到什么事件会冒泡,什么事件不会。
看完这些我们再来看看这两种模式的影响。
1、子元素没有click函数,但是父元素有
可以看到,点击子元素的时候,也会调用父元素的click函数
2、子元素有cilck函数,父元素也有click函数
可以看到,点击子元素的时候也触发了父元素的click函数
上面两个就是冒泡了,然后我们该如何阻止这总默认时间呢
w3c的方法是e.stopPropagation(),IE则是使用window.event.cancelBubble = true;
可以看到,成功阻止了冒泡行为