e.target: 指向的是触发事件监听的对象
e.currentTarget:指向的是添加监听事件的对象组件
<view catchtap="fetch">
<image class="img" src="1.jpg" data-id="item.id">
</view>
这里的data-xxx中的xxx必须都是小写,不然获取出来的值是undefined
fetch:function(e){
let id = e.target.dataset.id;
}
在这段代码中:
我点击的是img,但是img上并没有点击事件,于是会一直向上去找并在view上找到了这个方法,但是postid在img上,所以用target,但是currentTarget获取的是fetch事件捕获到的view,view上并没有postid这个自定义属性
至此demo中target指的是img;currentTarget指的是view
所以我们在使用的时候如果你点击的是事件元素的子元素,用e.currentTarget来获取父元素的值,用e.target来获取子元素的值。
如果没有子元素只有元素本身,那么e.target === e.currentTarget