美文网首页
JS的捕获、绑定和冒泡

JS的捕获、绑定和冒泡

作者: yzw12138 | 来源:发表于2018-06-30 22:28 被阅读0次

JS的addEventListener方法

  • addEventListener方法是将监听器绑定到某个Document元素上,当触发指定事件时,执行指定的回调函数,只要当前Document未被销毁掉,该事件就会被调用,如:
<div class="list-bottom load-more">加载更多</div>

document.querySelector('.load-more').addEventListener('click', function(e) {
    console.log('加载更多');
}
// 此时点击div会触发点击事件

// 当div去掉“load-more”时
<div class="list-bottom">加载更多</div>

// 此时点击div仍然会触发点击事件,可以通过判断某个class是否存在来阻止事件继续执行,即触发该事件但并不执行操作
 document.querySelector('.load-more').addEventListener('click', function(e) {
     if (! this.classList.contains("load-more")) return;
     console.log('加载更多');
}
  • addEventListener的参数:dom.addEventListener(type, listener, useCapture );
    type:事件触发的类型;
    listener:当监听的事件被触发后所执行的操作;
    useCapture :可选参数,Boolean类型,默认为false.在一个DOM树中,最外面的根元素注册了listener,当DOM树中的某一子元素触发该事件时,是否会触发其父节点绑定的事件.

捕获、绑定和冒泡

捕获:多层DOM树,鼠标触发DOM事件时,浏览器会从根节点开始向内进行事件传播,如果父元素绑定了相同事件则会先触发父元素事件.

<html>
    <body>
        <div id="d1">parent
            <div id="d2">child</div>
        </div>
    </body>
    <script>
        document.body.addEventListener('click', function(e) {
            console.log('body-cap');
        }, true);
        document.querySelector('#d1').addEventListener('click', function(e) {
            console.log('parent-cap');
        }, true);
        document.querySelector('#d2').addEventListener('click', function(e) {
            console.log('child-cap');
        }, true);
    </script>
</html>
// 输出结果
body-cap
parent-cap
child-cap

冒泡:与传播恰好相反,由触发事件节点向根节点传播事件.

    <body>
        <div id="d1">parent
            <div id="d2">child</div>
        </div>
    </body>
    <script>
        document.body.addEventListener('click', function(e) {
            console.log('body');
        });
        document.querySelector('#d1').addEventListener('click', function(e) {
            console.log('parent');
        });
        document.querySelector('#d2').addEventListener('click', function(e) {
            console.log('child');
        });
    </script>
</html>
// 输出结果
child
parent
body

相关文章

  • JS的捕获、绑定和冒泡

    JS的addEventListener方法 addEventListener方法是将监听器绑定到某个Documen...

  • vue 阻止事件冒泡,捕获方法

    要想了解 VUE 阻止事件冒泡和捕获方法,首先要了解一下 JS 事件和 JS 阻止事件冒泡,捕获方法 1. js ...

  • 事件

    事件顺序 先执行捕获事件,然后目标阶段,再执行冒泡事件 给一个dom即绑定了捕获,又绑定了冒泡,那么先绑定什么事件...

  • js 阻止冒泡 阻止默认事件

    js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件...

  • 默认事件

    js冒泡和捕获是事件的两种行为,使用event.stopPropagation()起到阻止捕获和冒泡阶段中当前事件...

  • 事件的绑定、捕获和冒泡

    传统的绑定方式 element.onclick = function(e){// ...}; 传统绑定的优点非常简...

  • JS事件相关基础

    js事件: 键盘事件: JS中的事件冒泡和事件捕获: 1、事件冒泡。如下代码: 点击button事件,连同父元素绑...

  • Javascript 事件代理、冒泡和捕获

    2019开工荒了两天,赶紧开始! 为什么写事件代理、冒泡、捕获,首先冒泡和捕获是js事件的核心基础,事件代理原理来...

  • JS 事件绑定和DOM事件流(冒泡和捕获)

    JS事件绑定 均以点击事件为例: 方法1:把函数绑定在HTML标签上 也叫HTML元素行间事件 方法二:把函数赋值...

  • teambition 面试题解析

    一、事件捕获和冒泡的理解。 1、事件绑定的三种形式 1⃣️标签行间内绑定 特点:当同一事件...

网友评论

      本文标题:JS的捕获、绑定和冒泡

      本文链接:https://www.haomeiwen.com/subject/dodtuftx.html