js事件处理机制
js事件的三个阶段分别为:捕获、目标、冒泡
事件捕获:父级元素先触发,子元素后触发
W3C--addEventListener('click','doSomething','true')//若第三个参数为true则采用事件捕获,为false,则采用事件冒泡。
IE浏览器只支持事件冒泡,不支持事件捕获,故使用element.attachEvent('onclick','doSomething')
事件冒泡:子元素先触发,父元素后触发。
(当一个元素的事件被触发时,同样的事件将会在该元素的所有祖先元素中被触发)
阻止事件冒泡:
W3C--event.stopPropagation()
IE--event.cancelBubble=true;
var event=event||window.event;
if(event&&event.stopPropagation){
event.stopPropagation();
}else{
event.cancelBubble=true;
}
//stopImmediatePropagation()在阻止事件冒泡的同时,也阻止了在相同对象上注册的任何其他事件处理程序的调用。
取消默认操作
W3C--event.preventDefault();
IE--event.returnValue=false;
function cancelBehavior(event){
var event==event||window.event;
if(event.preventDefault)
event.preventDefault();
if(event.returnValue)
event.returnValue=false;//js 只会阻止默认行为,而jQuery既能阻止默认行为又防治对象冒泡
//return false;//处理使用对象属性注册的处理程序
}