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;//处理使用对象属性注册的处理程序
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容