JavaScript阻止事件冒泡

admin發表於2018-07-16

事件冒泡可以參閱JavaScript事件冒泡一章節,

任何現象都可能是雙刃劍,有時候利用事件冒泡能夠帶來便利性,但是有時候也會帶來不便。

下面通過帶來例項介紹一下如何阻止事件冒泡。

程式碼例項如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script type="text/javascript">
window.onload=function(){
  var bt=document.getElementById("bt");
  var main=document.getElementById("main");
  bt.onclick=function(){
      alert("按鈕事件觸發");
    }
  main.onclick=function(){
      alert("div事件觸發");
    }
}
</script>
</head>
<body>
<div id="main">
  <input type="button" id="bt" value="檢視效果"/>
</div>
</body>
</html>

點選按鈕會觸發註冊在它本身的事件,也通過會將事件傳遞給它的父元素。

程式碼修改如下:

[HTML] 純文字檢視 複製程式碼執行程式碼
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>螞蟻部落</title>
<script type="text/javascript">
function stopBubble(e){
  if(e&&e.stopPropagation){
    e.stopPropagation();
  }
  else{
    window.event.cancelBubble=true;
  }
} 
window.onload=function(){
  var bt=document.getElementById("bt");
  var main=document.getElementById("main");
  bt.onclick=function(ev){
    var ev=ev||window.event;
    alert("按鈕事件觸發");
    stopBubble(ev)
  }
  main.onclick=function(){
      alert("div事件觸發");
    }
}
</script>
</head>
<body>
<div id="main">
  <input type="button" id="bt" value="檢視效果"/>
</div>
</body>
</html>

以上程式碼阻止事件冒泡現象,程式碼比較簡單不多介紹。

相關閱讀:

(1).var ev=ev||window.event參閱var ev=window.event||ev的作用是什麼一章節。 

(2).stopPropagation方法參閱JavaScript stopPropagation()一章節。 

相關文章