获取当前事件源DOM

获取当前事件源DOM

今天用Vue3写程序时遇到了一个问题,原代码如下:

<template>
	<div id="toggleCodeButton" @click="toggleCode">
        显示代码
    </div>
</template>

<script lang="ts">
import { onMounted } from 'vue'
export default {
    setup() {
        const toggleCodeButton = <HTMLDivElement>document.querySelector('#toggleCodeButton')
        const toggleCode = onMounted(() => {
            console.log(toggleCodeButton)
        })
    }
}
</script>

预期的结果时打印出toggleCodeButton这个DOM元素,但是结果返回的是null

后来发现了问题所在:我虽然log是在挂载完成后,但是获取DOM却是在挂载之前,当然不会有结果,只要将获取DOM元素也放到onMounted()钩子中即可。

代码如下:

setup() { 
        const toggleCode = onMounted(() => {
		const toggleCodeButton = <HTMLDivElement>document.querySelector('#toggleCodeButton')
            console.log(toggleCodeButton)
        })
    }

本文想要记录的是在查找解决办法的过程中发现的另一种方法,可以获取触发当前事件的DOM,即在调用的方法中传入$event参数,再用e.target获取DOM

代码修改如下:

<template>
	<div id="toggleCodeButton" @click="toggleCode($event)">
        显示代码
    </div>
</template>

<script lang="ts">
export default {
    setup() {
        const toggleCode = (e) => {
            console.log(e.target)
        }
    }
}
</script>

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!