一般的事件流中有两种:一是事件捕获 二是事件冒泡
事件冒泡的理解:何谓冒泡,当水开的时候,水珠不断地向上冒的过程。在JS中同样如此。在DOM中是一种树型的结构。
如:window
document
html
body
span
例如span标签绑定了一个onclick事件.在没有阻止冒泡事件的时候,当span发生onclick事件时,body,html,document,window同样会触发onclick事件(前提是这个几个祖先标签绑定了onlick事件),否则是看不出效果。
事件捕获很少用到。
阻止事件冒泡方法:
在非IE下的方法是stopPropagation();
在IE下的方法中:cancelBubble属性;当cancelBubbl=true的时候为阻止冒泡事件.
解决兼容的方法是:
obj.onclick=function(ev){
e=ev || window.event;
e.stopPropagation?e.stopPropagation():e.cancelBubble=true;
或者
if(e.stopPropagation){
e.stopPropagation()
}else{
e.cancelBubble=true;
}
};