0
点赞
收藏
分享

微信扫一扫

Vue里`$event` 中的target和currentTarget的区别

汤姆torn 2022-02-10 阅读 84

$event 中的target和currentTarget的区别

$event是Vue自带的一个属性,可以看到很多属性。有点类似DOM中的event。

讲到这里我们就要提出一下下面两个重要的东西:

event.target 触发事件的元素对象

event.currentTarget 绑定事件的元素对象

我们来上案例来讲解一下两者的区别:

<body>
    <div class="app">
        <button @click="add($event)">点击添加</button>
        <span>{{num}}</span>
    </div>
    <script src="../node_modules/vue/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: '.app',
            data: {
                num: 0
            },
            methods: {
                add(event) {
                    console.log('我是target',event.target)
                    console.log('我是currentTarget',event.currentTarget)
                    this.num += 1;
                }
            },
        })
    </script>
</body>

效果图如下:打印的内容我们发现是一样的
效果图
那让我们对代码进行一点修改再看看效果,我们修改button内的内容:

   <button @click="add($event)"><a href="" @click.prevent="">点击添加</a></button>

我们来看效果:
效果图

这里发现了两者的区别,那正好我们就照着这个现象解释一下两者的概念:

event.target 触发事件的元素对象,这句话呢就像是事件流中的目标阶段,我 点击了哪个元素获取了哪个元素,最终就呈现出来该元素,不会连带其他的元素。

event.currentTarget 绑定事件的元素对象,这就像一个完整的事件流了,当你点击某个元素,通过事件流实际上是获取了它以及它的所有父级的元素,那么这个事件是否和它的父级绑定在一起?当我点击a标签的时候所有有关它的都会被调用,所以就有了a标签和button标签。

举报

相关推荐

0 条评论