Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)


Posted in Javascript onDecember 04, 2019

1. 绑定元素

Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)

2. mounted生命周期

Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)

3. 实现思路

  • 页面挂载完后,监听全局点击事件
  • 获取当前点击的元素,根据需求获取当前元素本身的属性
  • 判断当前点击元素与要隐藏的元素是否相同
  • 当前点击元素与要隐藏的元素不相同则隐藏

4. 最终效果

Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)

接着看下vue实现点击目标元素外页面的其他地方隐藏弹窗

方法:

步骤1:给页面最外出的元素div加点击事件:@click=“popShow = false”

步骤2:给点击目标元素加点击事件:@click=“popShow = true”

备注:popShow 为控制弹窗显示与隐藏的标志。

PS:下面看下vue实现点击其他地方隐藏div

方法一:

通过监听事件

document.addEventListener('click',function(e){
    if(e.target.className!='usermessage'){
     that.userClick=false;
    }
})

方法二(比较好):

给最外层的div加个点击事件 @click="userClick=false"

给点击的元素上面加上:@click.stop="userClick=!userClick"

方法三:

<template>
<!--向页面添加关闭div的事件监听-->
<div class="page" @click="hide">

<!--添加.stop防止page的点击事件触发,导致无法显示div-->
<button @click.stop="show">点击显示div</button>

<!--指定的div。添加.stop防止点击div内的元素时,整个div被关闭-->
<div @click.stop>
...
</div>

</div>
<template>

<script>
export default {
methods:{
show(){},
hide(){}
}

}
</script>

小结:

通过vue.js 事件的.stop修饰符可以阻止事件继续冒泡传播,也可以使用原生js事件的event.stopPropagation()方法。

通过向指定的div添加.stop,可以实现只有点击非该div内的元素时,才会往上冒泡至page,从而实现点击其他地方隐藏div。

要向触发显示div的按钮添加.stop,否则一点击按钮,触发show()之后传播到page,立马就会触发hide(),div就无法显示。

总结

以上所述是小编给大家介绍的Vue实现点击当前元素以外的地方隐藏当前元素,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
使用javascript控制cookie显示和隐藏背景图
Feb 12 Javascript
javascript中的括号()用法小结
Apr 14 Javascript
JavaScript实现找出数组中最长的连续数字序列
Sep 03 Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 Javascript
基于jquery实现省市联动效果
Nov 23 Javascript
JS文件上传神器bootstrap fileinput详解
Jan 28 Javascript
那些精彩的JavaScript代码片段
Jan 12 Javascript
AngularJS中$http的交互问题
Mar 29 Javascript
微信小程序获取用户openId的实现方法
May 23 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
JS获取并处理php数组的方法实例分析
Sep 04 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
Sep 12 Javascript
Vue实现图片与文字混输效果
Dec 04 #Javascript
环形加载进度条封装(Vue插件版和原生js版)
Dec 04 #Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 #Javascript
在vue和element-ui的table中实现分页复选功能
Dec 04 #Javascript
vue项目中极验验证的使用代码示例
Dec 03 #Javascript
jQuery轮播图功能制作方法详解
Dec 03 #jQuery
JS实现的雪花飘落特效示例
Dec 03 #Javascript
You might like
php4的session功能评述(三)
2006/10/09 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP数组游标实现对数组的各种操作详解
2016/01/26 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
2017/05/30 PHP
详解PHP使用Redis存储session时的一个Warning定位
2017/07/05 PHP
laravel返回统一格式错误码问题
2019/11/04 PHP
非常不错的一个javascript 类
2006/11/07 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
Jquery操作Ajax方法小结
2015/11/29 Javascript
JS、jQuery中select的用法详解
2016/04/21 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
基于Vue中点击组件外关闭组件的实现方法
2018/03/06 Javascript
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
python global关键字的用法详解
2019/09/05 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
python爬虫用request库处理cookie的实例讲解
2021/02/20 Python
.NET面试问题集
2015/12/08 面试题
生物化工工艺专业应届生求职信
2013/10/08 职场文书
面试自我评价范文
2014/09/17 职场文书
紧急迫降观后感
2015/06/15 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers