JavaScript实现事件的中断传播和行为阻止方法示例
事件传播
MicroSoft的设计是当事件在元素上触发时,该事件将接着在该节点的父节点触发,以此类推,事件一直沿着DOM树向上传播,直到到达顶层对象document元素。这种自底向上的事件传播方式称为“事件冒泡”,也就是事件传播。
如何中断事件的传播?
stopPropagation()w3c取消冒泡
cancleBubble=trueIE取消冒泡
取消事件默认效果:
returnValue=falseIE取消事件效果
defaultPrevent()w3c取消事件效果
<divid='aa'> <divid='bb'> <divid='cc'></div> </div> </div>
#aa{ width:600px; height:600px; background:gray; } #bb{ width:400px; height:400px; background:green; } #cc{ width:200px; height:200px; background:red; }
捕捉写法停止传播从最顶层开始往下
document.getElementById('aa').addEventListener('click',function(ev){alert('aa');ev.stopPropagation();},true);//结果捕捉到aa加true由冒泡变为捕捉从上到下 document.getElementById('bb').addEventListener('click',function(){alert('bb')},true); document.getElementById('cc').addEventListener('click',function(){alert('cc')},true);
冒泡写法停止传播从下往上
document.getElementById('aa').addEventListener('click',function(){alert('aa');});//加true由冒泡变为捕捉从上到下 document.getElementById('bb').addEventListener('click',function(){alert('bb')}); document.getElementById('cc').addEventListener('click', function(ev){ alert('cc'); ev.stopPropagation(); //ev.cancleBubble=true;//IE下取消冒泡方法 });//结果是冒出cc停止传播 }
取消事件效果
returnValue=false//IE取消事件效果
preventDefault()//w3c取消事件效果
document.getElementsByTagName('a')[0].onclick=function(ev){ alert('点击'); //达到事件结束的效果但是函数还是往下运行 // ev.preventDefault(); alert('已经拦截'); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。