首先我知道可以用e.target
获取到点击到的元素
但有这么一种情况:<a @click="foo" data-id="2015"><i>修饰文本</i>主要文本内容</a>
在这种情况下我点击到了<i>
标签同样会触发事件,但是我的e.target
获取到的就是<i>
,
有没有那么一种方法,可以让我像原生绑定的时候一样,可以直接用this.dataset.id
获取到我想要的那个
我目前的解决思路有两种:
1.给<i>
标签添加pointer-events:none
样式
2.给<i>
标签同样绑上data-id
属性
希望得到更好的解决方案
用 e.currentTarget
...
@yyx990803 根据我的测试,不论是点击<i>
还是<a>
,得到的e.currentTarget
都是null
那得给重现
仔细研究了一下,之前是console.log(e)
,直接看e
里面的currentTarget
是null
,直接console.log(e.currentTarget)
居然就有值了……不管是火狐44还是谷歌49都是这样,我也是无语了。
不过问题还是解决了,谢谢
因为等你展开 log 出来的事件对象的时候时候它已经冒泡完毕了,自然就没有 currentTarget
了。
@yyx990803 厉害了我的哥。终于知道为什么log不出来了
试试console.dir()
我遇到的一种情况,踩坑了
del (event) {
let currentTargetDom = event.currentTarget; // 暂存起来
layer.open({
className: 'layer-confirm',
content: '确定删除吗?',
btn: ['删除', '取消'],
yes: () => {
console.log(event)
console.log(event.currentTarget); // 注意,在某个回调中才获取,冒泡完毕,也是 null
console.log(currentTargetDom ); // 这样可以得到
}
})
}
log不出来确实好恶心。。。。
Most helpful comment
因为等你展开 log 出来的事件对象的时候时候它已经冒泡完毕了,自然就没有
currentTarget
了。