事件冒泡和捕获的问题。

请问大神们,我在最外层div加个点击事件,里面放个a标签,点击a标签也可以产生冒泡到外层div?是因为它属于外层div的原因么?

难道不是需要两个都绑定事件,里层才能冒泡到最外面来么?

那么反之事件捕获呢? 小白不太理解。。。

阅读 2.1k
2 个回答

请问大神们,我在最外层div加个点击事件,里面放个a标签,点击a标签也可以产生冒泡到外层div?

是的。

是因为它属于外层div的原因么?

因为在结构上,它们是有层级关系的(父子关系)。

难道不是需要两个都绑定事件,里层才能冒泡到最外面来么?

不是。

那么反之事件捕获呢? 小白不太理解。。。

一样的。

理解的时候,注意想明白,节点范围的“大小”就行了,事件触发一定是不能跳过“大”节点的嘛。

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta charset="utf-8" />
<title>事件</title>
<link rel="stylesheet" type="text/css" href="" />
</head>
<body>

  <div id="out" style="background-color: yellow;">
    <div id="middle" style="background-color: red; width: 50%;">
      <a href="#" id="inner" style="background-color: green;">里面的东西</a>
    </div>
  </div>

  <script type="text/javascript">
    // 下传, 捕捉
    document.getElementById('out').addEventListener('click', function(e){
      console.log('1');
    }, true);

    // 上浮, 冒泡
    document.getElementById('out').addEventListener('click', function(e){
      console.log('2');
    }, false);
  </script>

</body>
</html>

对于dom中的冒泡事件,你可以把层层嵌套dom结构想象成同心圆结构,点击里层的圆任意位置是就相当于点击了外层圆的同一位置。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题