• addEventListener 的事件冒泡


    语法

    target.addEventListener(type, listener, useCapture);

    • target 文档节点、document、window 或 XMLHttpRequest。
    • type 字符串,事件名称,不含“on”,比如“click”、“mouseover”、“keydown”等。
    • listener 实现了 EventListener 接口或者是 JavaScript 中的函数。
    • useCapture 是否使用捕捉,一般用 false。当为false时为冒泡获取(由里向外),true为capture方式(由外向里)。

    第三参数是包裹层触发问题,事件执行前先判断执行顺序,程序先由外向里扫描注册到各层的事件,如果事件的useCapture参数是true,就立即执行,执行完后继续往里层扫描。false就跳过直接往里层扫描。
    扫描完后到达点击触发的那个元素,然后开始由里向外执行未执行的事件

    <div id="id1" style="200px; height:200px; position:absolute; top:100px; left:100px; background-color:blue; z-index:4">
          <div id="id2" style="200px; height:200px; position:absolute; top:20px; left:70px; background-color:green; z-index:1"></div>
    </div>

    eg1:

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

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

    点击id2的div结果是: id2, id1

    eg2:

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

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

    结果是: id2, id1

    eg3:

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

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

    结果是:id1,id2

    eg4:

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

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

    结果是:id1,id2

  • 相关阅读:
    TP5报如下的错误 Indirect modification of overloaded element of thinkpaginatorCollection has no effect【转】
    PHPnumber_format()函数的使用
    蓝桥杯-PREV28-地宫取宝
    HihoCode-1053-居民迁移
    HihoCode-1323-回文字符串
    蓝桥杯-PREV3-带分数
    HDU-6312-Game
    HDU-6438-Buy and Resell
    CF-1117C-Magic Ship
    HDU-2802-F(N)
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/6685765.html
Copyright © 2020-2023  润新知