事件传播MicroSoft的设计是当事件在元素上触发时,该事件将接着在该节点的父节点触发,以此类推,事件一直沿着DOM树向上传播,直到到达顶层对象document元素。这种自底向上的事件传播方式称为“事件冒泡”,也就是事件传播。
如何中断事件的传播?stopPropagation()
w3c取消冒泡
cancleBubble = true
IE取消冒泡
取消事件默认效果:returnValue = false
IE 取消事件效果
defaultPrevent()
w3c取消事件效果
<div id="aa"> <div id="bb"> <div id ="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("已经拦截");}
总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。