vue点击当前盒子以外任意地方隐藏当前盒子

方法一: contains方法 用于判断DOM元素的包含关系;

需要注意的是:它以HTMLElement为参数,且返回布尔值。

复制代码
 document.addEventListener('click', (el) => {
        console.log(this.$refs.content.contains(el.target));
      })
复制代码
<template>
    <button @click.stop='showBox'>点击展示隐藏盒子</button>
    <div ref='box' v-show="flag">要隐藏的盒子</div>
</template>
<script>
    export default {
        data(){
           return{
              flag:false
           }
        },
        mounted() {
            document.addEventListener('click', this.hideBox);
        },
        methods:{
            hideBox(e){
                //判断是否点击的是盒子之外
               if (!this.$refs.box.contains(e.target)) {
                   this.flag = false
               }
            },
            showBox(){
                this.flag = !this.flag
            },
        }
    }
</script>

方法二: 可以给盒子加上阻止冒泡 .stop

相关推荐
兆子龙33 分钟前
你不会使用 CSS 函数 clamp()?那你太 low 了😀
前端·javascript
兆子龙34 分钟前
前端性能优化终极清单:从 3 秒到 0.5 秒的实战经验
前端·javascript
兆子龙36 分钟前
babel-loader:让你的 JS 代码兼容所有浏览器
前端
百万蹄蹄向前冲37 分钟前
支付宝 VS 微信 小程序差异
前端·后端·微信小程序
兆子龙41 分钟前
JavaScript 的 Symbol.iterator:手写一个可迭代对象
前端
NGC_661141 分钟前
ArrayList扩容机制
java·前端·算法
独泪了无痕6 小时前
使用Fetch API 探索前后端数据交互
前端·http·交互设计
css趣多多6 小时前
别名路径的知识点
前端
靓仔建8 小时前
Vue3导入组件出错does not provide an export named ‘user_setting‘ (at index.vue:180:10)
开发语言·前端·typescript