首先了解什么是JS事件冒泡:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。
如何来阻止事件冒泡? 先看下倒子,思考下点击“hr_three”弹出信息顺序。
<div id="divOne" οnclick="alert('我是最外层');"> <div id="divTwo" οnclick="alert('我是中间层!')"> <a id="hr_three" href="http://www.baidu.com" mce_href="http://www.baidu.com" οnclick="alert('我是最里层!')">点击我</a> </div> </div>运行顺序:我是最里层!--> 我是中间层!--> 我是最外层!最后是连接到百度。本来只是想“hr_three”弹出的,其他的不弹的。这就是事件冒泡,从里向外冒泡。
阻止事件冒泡方法
1.event.stopPropagation()方法,event.cancelBubble=true (IE独有);只是阻止冒泡
2.return false;阻止冒泡和默认行为(“hr_three”不会连接到百度)
还有一种只是阻止默认行为,不阻止冒泡方法event.preventDefault();
转载于:https://www.cnblogs.com/sencha/p/3145729.html