vue中实现点击空白区域关闭弹窗的两种方法


Posted in Vue.js onDecember 30, 2020

1. 第一种做法

首页在外层容器里面取一个名字为main,即ref="main",当bankSwitch为true的时候,弹窗出现

<div class="selectedBorder" ref="main">
	<div class="bankItem" v-if="bankSwitch == true">
		你好我是弹窗里面的内容部分
 	</div>
</div>

所触发的事件如下:

首页,先在全局创建一个点击事件:bodyCloseMenus

事件作用:当点击main容器的时候(this.refs.main && !this.refs.main.contains(e.target)),并且弹窗出现的时候(self.bankSwitch == true),点击空白区域将弹窗关闭(self.bankSwitch = false)

最后,在页面注销前,将点击事件给移除

mounted() {
  document.addEventListener("click", this.bodyCloseMenus);
 },
 methods:{
 bodyCloseMenus(e) {
   let self = this;
   if (this.$refs.main && !this.$refs.main.contains(e.target)) {
    if (self.bankSwitch == true){
     self.bankSwitch = false;
    }
   }
  },
beforeDestroy() {
  document.removeEventListener("click", this.bodyCloseMenus);
 },

2.第二种做法

首页在外层容器里面定义一个阻止冒泡事件,即@click.stop,当bankSwitch为true的时候,弹窗出现

<div class="selectedBorder" @click.stop>
	<div class="bankItem" v-if="bankSwitch == true">
		你好我是弹窗里面的内容部分
 	</div>
</div>

所触发的事件如下:

首页,先在全局创建一个点击事件:bodyCloseMenus

事件作用:当弹窗出现的时候(self.bankSwitch == true),点击空白区域将弹窗关闭(self.bankSwitch = false)

最后,在页面注销前,将点击事件给移除

mounted() {
  document.addEventListener("click", this.bodyCloseMenus);
 },
 methods:{
 bodyCloseMenus(e) {
   let self = this;
    if (self.bankSwitch == true){
     self.bankSwitch = false;
    }
  },
beforeDestroy() {
  document.removeEventListener("click", this.bodyCloseMenus);
 },

以上就是vue中实现点击空白区域关闭弹窗的两种方法的详细内容,更多关于vue 点击空白区域关闭弹窗的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue 基于abstract 路由模式 实现页面内嵌的示例代码
Dec 14 Vue.js
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
Vue常用API、高级API的相关总结
Feb 02 Vue.js
vue-router懒加载的3种方式汇总
Feb 28 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
vue3.0中使用element的完整步骤
Mar 04 Vue.js
SSM VUE Axios详解
Oct 05 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue代码分块和懒加载非必要资源文件
Apr 11 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
梳理一下vue中的生命周期
Dec 30 #Vue.js
Vue实现简易购物车页面
Dec 30 #Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 #Vue.js
vue+element UI实现树形表格
Dec 29 #Vue.js
vue实现树状表格效果
Dec 29 #Vue.js
vue实现图书管理系统
Dec 29 #Vue.js
Vue实现随机验证码功能
Dec 29 #Vue.js
You might like
php生成xml简单实例代码
2009/12/16 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
php源码的安装方法和实例
2019/09/26 PHP
js下将字符串当函数执行的方法
2011/07/13 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
JS简单获得节点元素的方法示例
2018/02/10 Javascript
微信小程序block的使用教程
2018/04/01 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
[02:28]DOTA2英雄基础教程 灰烬之灵
2013/12/19 DOTA
windows下python连接oracle数据库
2017/06/07 Python
Python 自动化表单提交实例代码
2017/06/08 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
在python中,使用scatter绘制散点图的实例
2019/07/03 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
蔬菜基地的创业计划书
2014/01/06 职场文书
医学类个人求职信范文
2014/02/05 职场文书
党员学习新党章思想汇报
2014/10/25 职场文书
群众路线调研报告范文
2014/11/03 职场文书
民间借贷借条如何写
2015/05/26 职场文书
张思德观后感
2015/06/09 职场文书
呐喊读书笔记
2015/06/30 职场文书
八年级物理教学反思
2016/02/19 职场文书
在K8s上部署Redis集群的方法步骤
2021/04/27 Redis
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
SQL中去除重复数据的几种方法汇总(窗口函数对数据去重)
2023/05/08 MySQL