可以使用 Vue.js 中的 `v-show` 和 `@click` 事件来实现打开和关闭元素:

  1. 在 `data` 中添加一个变量 `show`,用于控制元素的显示和隐藏,初始值为 `false`。
    ```javascript
    data() {
      return {
        show: false
      }
    }
    ```
    
  2. 在模板中添加一个按钮和要显示的元素,在元素上添加 `v-show` 指令,根据 `show` 变量来控制元素的显示和隐藏。
    ```html
    <button @click="show = !show">打开元素</button>
    <div v-show="show">要显示的元素</div>
    ```
    
  3. 在元素外部添加一个点击事件,当点击元素外部时,关闭元素,即将 `show` 变量赋值为 `false`。
    ```javascript
    mounted() {
      document.addEventListener('click', this.handleClickOutside)
    },
    beforeDestroy() {
      document.removeEventListener('click', this.handleClickOutside)
    },
    methods: {
      handleClickOutside(event) {
        if (!this.$el.contains(event.target)) {
          this.show = false
        }
      }
    }
    ```
    

完整代码如下:

<template>
  <div>
    <button @click="show = !show">打开元素</button>
    <div v-show="show">要显示的元素</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      show: false
    }
  },
  mounted() {
    document.addEventListener('click', this.handleClickOutside)
  },
  beforeDestroy() {
    document.removeEventListener('click', this.handleClickOutside)
  },
  methods: {
    handleClickOutside(event) {
      if (!this.$el.contains(event.target)) {
        this.show = false
      }
    }
  }
}
</script>
Vue.js 实现点击元素外部关闭元素:v-show 和 @click 事件

原文地址: https://www.cveoy.top/t/topic/m635 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录