dom事件模型

先捕获,再冒泡
第三个参数为false 冒泡的时候执行
第三个参数为true 捕获的时候执行
不传则默认为false

注意点: 如果这个元素是被点击的元素,那么捕获不一定在冒泡之前,顺序是由监听顺序决定的。

dom事件模型

一直冒泡到body。。。

e.stopPropagation() : 阻止事件传递,不阻止默认行为
说明: 如果捕获阶段stopPropagation,则后续捕获冒泡都不会触发。

e.preventDefault是事件对象Event的一个方法,作用是取消一个目标元素的默认行为如链接<a href="xxx">点我</a>,提交按钮<input type=”submit”>等

e.preventDefault() : 阻止默认行为,不阻止事件传递

代码

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <div id="grand">
    爷爷
    <div id="father">
      爸爸
      <div id="son">
        儿子
      </div>
    </div>
  </div>
</body>
</html>
/*
  先捕获,再冒泡
  第三个参数为false 冒泡的时候执行
  第三个参数为true 捕获的时候执行
  不传则默认为false
  
  注意点: 如果这个元素是被点击的元素,那么捕获不一定在冒泡之前,顺序是由监听顺序决定的。
*/
document.getElementById('son')
.addEventListener('click', function() {
  console.log('son clicked');
}, false);

document.getElementById('son')
.addEventListener('click', function() {
  console.log('son clicked 2');
}, true);


document.getElementById('father')
.addEventListener('click', function() {
  console.log('father clicked');
}, true);

document.getElementById('grand')
.addEventListener('click', function() {
  console.log('grand clicked');
}, false);

document.addEventListener('click', function() {
  console.log('document clicked');
}, false);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容