关于e.currentTarget

来源:3-2 项目作业

soso_crazy

2019-06-13 12:08:33

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://img.mukewang.com/climg/5d01cb81000141b618190901.jpg


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

我上网查过:

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

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

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


写回答

2回答

好帮手慕星星

2019-06-13

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

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

http://img.mukewang.com/climg/5d0208b000014ec606030377.jpg

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

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

0

好帮手慕星星

2019-06-13

你好,

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

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

http://img.mukewang.com/climg/5d01fb6d0001ea2406180516.jpg

效果:

http://img.mukewang.com/climg/5d01fb840001a49d06280521.jpg

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

祝学习愉快!

0
hoso_crazy
h 但是采用事件代理,$('.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?
h019-06-13
共1条回复

0 学习 · 6815 问题

查看课程