JavaScript實現(xiàn)事件的中斷傳播和行為阻止方法示例
事件傳播
MicroSoft的設(shè)計是當事件在元素上觸發(fā)時,該事件將接著在該節(jié)點的父節(jié)點觸發(fā),以此類推,事件一直沿著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);// 結(jié)果捕捉到aa 加true 由冒泡變?yōu)椴蹲?從上到下
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 由冒泡變?yōu)椴蹲?從上到下
document.getElementById('bb').addEventListener('click',function (){alert('bb')});
document.getElementById('cc').addEventListener('click',
function (ev){
alert('cc');
ev.stopPropagation();
// ev.cancleBubble = true;//IE下 取消冒泡方法
}); //結(jié)果是冒出cc 停止傳播
}
取消事件效果
returnValue = false //IE 取消事件效果
preventDefault() //w3c取消事件效果
document.getElementsByTagName('a')[0].onclick = function (ev){
alert('點擊');
//達到事件結(jié)束的效果 但是函數(shù)還是往下運行
//
ev.preventDefault();
alert('已經(jīng)攔截');
}
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
javascript browser瀏覽器類型以及版本判斷代碼
在團隊js框架建設(shè)過程中寫的一段瀏覽器判斷代碼,喜歡的朋友可以參考下。2010-04-04
基于 Immutable.js 實現(xiàn)撤銷重做功能的實例代碼
這篇文章主要介紹了基于 Immutable.js 實現(xiàn)撤銷重做功能及一些需要注意的地方,需要的朋友可以參考下2018-03-03
JavaScript動態(tài)添加數(shù)據(jù)到表單并提交的幾種方式
這篇文章主要介紹了JavaScript動態(tài)添加數(shù)據(jù)到表單并提交,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-06-06
JavaScript+canvas實現(xiàn)框內(nèi)跳動小球
這篇文章主要為大家詳細介紹了JavaScript+canvas實現(xiàn)框內(nèi)跳動小球,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-04-04

