zoukankan      html  css  js  c++  java
  • 【前端】event.target 和 event.currentTarget 的区别

    event.target 和 event.currentTarget 的区别

    举例说明:

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <style>
            div {
                margin: 1rem;
                padding: 1rem;
            }
    
            #a {background-color: #f00;}
            #b {background-color: #0f0;}
            #c {background-color: #00f;}
            #d {background-color: #aaa;}
        </style>
    </head>
    <body>
        <div id="a">a
            <div id="b">b
              <div id="c">c
                <div id="d">d</div>
              </div>
            </div>
        </div>
    
        <script>
            function logTarget(e) {
                console.log('target:' + e.target.id + ' & currentTarget:' + e.currentTarget.id);
            }
    
            document.getElementById('a').addEventListener('click', logTarget, false);
            document.getElementById('b').addEventListener('click', logTarget, false);
            document.getElementById('c').addEventListener('click', logTarget, false);
            document.getElementById('d').addEventListener('click', logTarget, false);
        </script>
    </body>
    </html>
    

    当点击d的时候,输出:

    target:d & currentTarget:d
    target:d & currentTarget:c
    target:d & currentTarget:b
    target:d & currentTarget:a
    

    当点击b的时候,输出:

    target:b & currentTarget:b
    target:b & currentTarget:a
    

    结论

    • target始终鼠标点击的element,固定不变;
    • currentTarget在事件捕获或者事件冒泡过程中,指向当前的element,会不断变化。
  • 相关阅读:
    Mybatis入门
    Spring的xml文件配置方式实现AOP
    jquery简直是太酷炫强大了
    [Google Guava] 2.2-新集合类型
    小规模的流处理框架.Part 1: thread pools
    数据库三大范式和五大约束
    Hibernate:缓存
    MyBatis:缓存配置
    Python:协程
    微信公众号开发之测试账号
  • 原文地址:https://www.cnblogs.com/forzhaokang/p/5221494.html
Copyright © 2011-2022 走看看