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>
原文地址:https://www.cnblogs.com/hacker-caomei/p/14430470.html