事件的阻止冒泡和阻止默认行为

Posted star

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事件的阻止冒泡和阻止默认行为相关的知识,希望对你有一定的参考价值。

阻止冒泡

w3c的方法是event.stopPropagation(),IE则是使用event.cancelBubble = true;

兼容写法

<div class="parent">
  <div class="child"></div>
</div>
<script>
  const child = document.querySelector(".child");
  child .addEventListener("click",function(event){
    event = window.event || event
    if(event.stopPropagation){
      event.stopPropagation()
    }else{
      event.cancelBubble = true
    }
  })    
</script>

阻止默认行为

w3c的方法是event.preventDefault(),IE则是使用event.returnValue = false;
如果事件是可以冒泡的,在冒泡过程中也可以阻止默认行为,举个例子,我们在body标签的click事件中阻止默认行为,那么页面上所有的a标签点击事件的默认行为都无法执行,也就是都无法跳转。

兼容写法

  <input id="div" value="123">
  <script>
  const div = document.getElementById("div")
  div.addEventListener("copy",function(event){
    event = window.event || event;
    if(event.preventDefault){
      event.preventDefault()
    }else{
      event.returnValue = false;
    }
  })
  </script>

return false

javascript的return false只会阻止默认行为,且只能在dom0事件中生效。
而用jQuery的话则既阻止默认行为又防止对象冒泡。

<a href="www.baidu.com" id="a"></a>
const a = document.getElementById("a")
a.onclick = function(){
    return false;
};
<a href="www.baidu.com" id="a"></a>
$("#a").on(\'click\',function(){
return false;
});

以上是关于事件的阻止冒泡和阻止默认行为的主要内容,如果未能解决你的问题,请参考以下文章

阻止事件冒泡 和 阻止事件默认行为

阻止事件冒泡和阻止默认行为

js 停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)

事件的阻止冒泡和阻止默认行为

阻止事件冒泡和事件默认行为

JS阻止冒泡和取消默认事件(默认行为)