zoukankan      html  css  js  c++  java
  • js dom 事件委托的 target 和currentTarget

    参考博客:https://blog.csdn.net/weixin_42458965/article/details/105687926

    https://www.cnblogs.com/guojiabing/p/12213332.html

    • target是事件触发的真实元素。(点击!)

    • currentTarget是事件绑定的元素。(绑定!)

    • 事件处理函数中的this指向是中为currentTarget

    event对象中 会有两个对象。一个是target,一个currentTarget。

     currentTarget是 box.onlick= function(e){}。绑定的事件。也就是 事件监听器的对象。

     target。实际上点击的对象。

     1 绑定在水果上, 绑定的对象是水果。

    如果点击水果。那么点击的对象是水果 == 绑定的水果。

    如果点击的是 苹果,那么对点击的对象是苹果 !== 绑定的水果。

    <body>
        <ul id="box">
            水果
            <Li id="apple">苹果</Li>
            <li>香蕉</li>
            <li>桃子</li>
        </ul>
     </body>
     <script type="text/javascript">
        var box = document.getElementById('box');
        var apple = document.getElementById('apple');
      
       //绑定在父元素box上(如果点击apple这个li时)
        box.onclick = function (e){
            console.log(e.target);           // <li id="apple">苹果</li>
            console.log(e.currentTarget);       //<ul id="box">...</ul>
            console.log(this);                  //<ul id="box">...</ul>
            console.log(e.currentTarget===this);      //true
            console.log(e.target === e.currentTarget);        //false
            console.log(e.target === this);           //false
        }
     
    
     </script>

    2 如果绑定的是苹果,那么绑定的就是苹果。 currentTarget==苹果。

    无论怎么点击都是苹果。

    <body>
        <ul id="box">
            水果
            <Li id="apple">苹果</Li>
            <li>香蕉</li>
            <li>桃子</li>
        </ul>
     </body>
     <script type="text/javascript">
        var box = document.getElementById('box');
        var apple = document.getElementById('apple');
      
       //绑定在父元素box上(如果点击apple这个li时)
        box.onclick = function (e){
            console.log(e.target);           // <li id="apple">苹果</li>
            console.log(e.currentTarget);       //<ul id="box">...</ul>
            console.log(this);                  //<ul id="box">...</ul>
            console.log(e.currentTarget===this);      //true
            console.log(e.target === e.currentTarget);        //false
            console.log(e.target === this);           //false
        }
     
        //直接绑定在目标元素apple上
        apple.onclick = function (e){  
            console.log(e.target);          //<li id="apple">苹果</li>
            console.log(e.currentTarget);    //<li id="apple">苹果</li>
            console.log(this);               //<li id="apple">苹果</li>
            console.log(e.target === e.currentTarget);      //true
            console.log(e.target === this);           //true
        } 
     </script>
  • 相关阅读:
    [BZOJ 2457] 双端队列 (思维)
    字符串划分 [Bitset 字符串Dp]
    POJ2947 Widget Factory [高斯消元]
    数字串 [分治+哈希+扩展KMP]
    POJ3590 The shuffle Problem [置换+dp]
    P1970 花匠 [权值线段树优化dp, NOIp2003, Y]
    UVA306 Cipher[循环节]
    POJ3270 Cow Sorting [置换]
    POJ 3128 Leonardo's Notebook[置换群幂相关]
    VMware 11 设置U盘启动,总是找不到physicalDrive1
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/14430470.html
Copyright © 2011-2022 走看看