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+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
vue项目实现分页效果
Mar 24 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue-cil之axios的二次封装与proxy反向代理使用说明
Apr 07 Vue.js
vue项目配置sass及引入外部scss文件
Apr 14 Vue.js
vue-treeselect的基本用法以及解决点击无法出现拉下菜单
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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
PHP新手上路(十一)
2006/10/09 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP基于单例模式实现的mysql类
2016/01/09 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方
2011/09/20 Javascript
使用jquery读取html5 localstorage的值的方法
2013/01/04 Javascript
jquery parent和parents的区别分析
2013/10/02 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
bootstrap fileinput 插件使用项目总结(经验)
2017/02/22 Javascript
jQuery插件HighCharts绘制的2D堆柱状图效果示例【附demo源码下载】
2017/03/14 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
2017/09/18 NodeJs
react-native fetch的具体使用方法
2017/11/01 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
2019/03/26 Javascript
微信小程序 点击切换样式scroll-view实现代码实例
2019/10/11 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
Python 实现文件的全备份和差异备份详解
2016/12/27 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python作用域与名字空间原理详解
2020/03/21 Python
Python Socket TCP双端聊天功能实现过程详解
2020/06/15 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
linux面试相关问题
2013/04/28 面试题
助学贷款贫困证明
2014/09/23 职场文书
农村党员对照检查材料
2014/09/24 职场文书
业务员岗位职责范本
2015/04/03 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP