美文网首页web前端开发
e.target与e.currentTarget

e.target与e.currentTarget

作者: twentyshaw | 来源:发表于2019-07-21 13:29 被阅读0次

通过一个例子来看e.target与e.currentTarget的区别与联系

<!DOCTYPE html>
<html>
<head>
    <title>test</title>
</head>
<body>
    <div id="A">我是A
        <div id="B">我是B</div>
    </div>
</body>
</html>

<script>
    var a = document.getElementById('A'),
        b = document.getElementById('B');
    function handler (e) {
        console.log(e.target);
        console.log(e.currentTarget);
    }
    a.addEventListener('click', handler);   
</script>

1. 关于 a.addEventListener('click', handler)

如果写成:b.addEventListener('click', handler),就只有点击b时会在控制台打印出结果,点击a不会打印出任何东西。

image.png
这是为什么呢?
首先要明确一个概念,事件的捕获或者冒泡,是DOM本身存在的一个现象,跟你加不加监听器没有关系。你加了监听器,只是为了在冒泡或者捕获的阶段,截取到这个事件。
也就是说,点击b,他会冒泡到a,但是你没在a上安监听器,他当然不会有任何反应(没有处理函数嘛)。但这时,如果b里面有子元素,你点击子元素也会看到不同的target与currentTaget打印出来。

2. 代码测试与结果:

  • 点击<div id="A">
    控制台打印出了:


    image.png

说明在点击a时,currentTargetarget都是 a

  • 点击作为子元素的<div id="B">
    控制台打印出:
    image.png
    说明在点击b时,target为b,但currentTarget仍为 a

3. 结论

currentTarget始终是监听事件者,即 直接调用addEventlistener那个节点
target是事件的真正发出者, 即 触发事件的节点,在click事件中就是被点击的节点。

4. 扩展

结合this来看:
this === e.currentTarget 总是为true
this === e.target 有可能不是true

相关文章

  • e.target与e.currentTarget

    通过一个例子来看e.target与e.currentTarget的区别与联系 1. 关于 a.addEventLi...

  • wxmp_note2

    e.target与e.currentTarget 如果你点击的是添加事件元素的子元素,就用e.currentTar...

  • e.target 与 e.currentTarget

    MDN 中对 target的解释为:一个触发事件的对象的引用,当事件处理程序在事件的冒泡或捕获阶段被调用时。对于 ...

  • e.target与e.currentTarget的区别

    在Dom事件对象中有两个属性总是傻傻记不住,就是e.target和e.currentTarget。在MDN中tar...

  • e.target 和 e.currentTarget 的区别

    大家开发中经常会跟DOM的事件打交道,也会经常用到e.target和e.currentTarget这两个对象,但是...

  • e.target?e.currentTarget?

    同样是生活在一个事件里的target,节点的差距怎么就这么大呢?为什么要有两个target呢?对于同一个节点而言,...

  • e.target与e.currentTarget的区别

    在DOM事件对象中有两个属性总是时不时的困扰我,就是target和currentTarget,有时候很迷惑分不清两...

  • e.target和e.currentTarget

    原文连接:https://blog.csdn.net/u013746071/article/details/522...

  • e.target,e.currentTarget辨析

    一、概述 事件监听中e有target和currentTarget两个属性,target只会出现在事件流目标阶段,c...

  • 【js进阶】e.target和e.currentTarget

    MDN中对target的解释为,一个触发事件的对象的引用, 当事件处理程序在事件的冒泡或捕获阶段被调用时。 而对于...

网友评论

    本文标题:e.target与e.currentTarget

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