关于e.currentTarget

关于e.currentTarget

function addClick() {
   $('.left-bar-inner').on('click','.left-item',function (e) {
       var $target=$(e.currentTarget); //指的是.left-item

       console.log(e.target.className);
       console.log(e.currentTarget.className);

       $target.addClass('active');
       $target.siblings().removeClass('active');


   });
}


http://img1.sycdn.imooc.com//climg/5d01cb81000141b618190901.jpg


运用了事件代理,但是e.currentTarget和e.target指的是谁?

我上网查过:

事件委托是什么呢?最简单来说:在父元素上添加可以处理子元素事件的事件处理函数。利用了事件冒泡,指定一个事件处理函数,来处理同一种类型的多个事件。这里顺便一起说下target和currenttarget的区别,target是触发事件的最具体的元素, currenttarget是绑定事件的元素(在函数中一般等于this)。

那为什么这里的e.currentTarget不是.left-bar-inner?

这里的currentTarget和target为什么有时是一致有时却是不一致的?


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕星星 2019-06-13 16:27:47

你好,点击事件绑定在了left-item上哦:

on绑定事件第二个参数是选择器:

http://img1.sycdn.imooc.com//climg/5d0208b000014ec606030377.jpg

这样写就是把点击事件绑定在了left-item上,不是left-bar-inner上。

所以target和currentTarget结果是一样的,自己可以再举例测试下。

好帮手慕星星 2019-06-13 15:31:10

你好,

1、target和currentTarget的区别理解的没有问题。

2、点击的地方不同,target指向也是不同的哦,例如:

http://img1.sycdn.imooc.com//climg/5d01fb6d0001ea2406180516.jpg

效果:

http://img1.sycdn.imooc.com//climg/5d01fb840001a49d06280521.jpg

点击红色部分li输出结果就是li元素,点击数字11,输出结果就是span,所以点击位置不同,元素也会不同。

祝学习愉快!

  • 提问者 soso_crazy #1
    但是采用事件代理,$('.left-bar-inner').on('click','.left-item',function (e) {}); e.currentTarget和e.target为什么都是.left-item? target是触发事件的最具体的元素, currenttarget是绑定事件的元素(在函数中一般等于this)。 绑定事件的元素是left-bar-inner,触发事件最具体元素是left-item。但是console.log(e.target)和e.currentTarget都是.left-item?
    2019-06-13 16:23:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师