挖洞与冒泡

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="author" content="z">
<title></title>
<style>
  div{
    width: 100px;
    height: 100px;
    background-color: red;
     color: white;
   }
</style>
</head>
<body>
   <section>
    <div>
      <a href="javascript:void(0);">可以点击</a>
    </div>
  </section>
 
  <script>
    var sec = document.querySelector("section");
    var div = document.querySelector("div");
    var a = document.querySelector('a');
 
     //addEventListener(1,2,3)
     // 第三个参数是可以选择的,表示事件在哪个阶段执行,它的取值是true(false),
     // 默认是false false 代表冒泡
     // true 代表挖洞 事件的两个阶段 挖洞和冒泡
     // 挖洞(捕获):从dom 跟结点向里面找,直到找到了添加的监听事件的元素
     // 冒泡:和挖洞相反的过程
    // 可以选择是挖洞或者冒泡阶段的监听事件
     div.addEventListener("click",function(){
 
     });
     document.documentElement.addEventListener("click",function(){
       console.log("HTML 挖洞");
       setTimeout(function(){
         div.style.backgroundColor = 'green';
       },1000)
     },true);
    document.documentElement.addEventListener("click",function(){
       console.log("HTML 冒泡");
       setTimeout(function(){
         div.style.backgroundColor = 'pink';
       },2000)
     },false);
 
    document.body.addEventListener("click",function(){
      console.log("body 挖洞");
    },true);
     document.body.addEventListener("click",function(){
      console.log("body 冒泡");
    },false);
    sec.addEventListener("click",function(event){
      console.log("section 挖洞");
      // stopPropagetion() 可以停止事件的传播
      // 不会影响同级别的监听事件
       // event.stopPropagation();
 
       // stopImmediatePropagation() 立刻停止
       // event.stopImmediatePropagation();
     },true);
     sec.addEventListener("click",function(){
       console.log("section-2 挖洞");
     },true);
 
     sec.addEventListener("click",function(){
      console.log("section 冒泡");
    },false);
     div.addEventListener("click",function(){
      console.log("div 挖洞");
     },true);
    div.addEventListener("click",function(){
       console.log("div 冒泡");
    },false);
    a.addEventListener("click",function(){
      console.log("a 挖洞");
    },true);
    a.addEventListener("click",function(){
      console.log("a 冒泡");
     },false);
</script>
</body>
</html>

转载于:https://www.cnblogs.com/zhou-lei/p/6947493.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值