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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
JavaScript对象、属性、事件手册集合方便查询
Jul 04 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
Apr 26 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
Dec 31 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
Apr 10 Javascript
js创建对象几种方式的优缺点对比
Sep 28 Javascript
vue-ajax小封装实例
Sep 18 Javascript
深入理解js 中async 函数的含义和用法
May 13 Javascript
Vue函数式组件-你值得拥有
May 09 Javascript
Layui之table中的radio在切换分页时无法记住选中状态的解决方法
Sep 02 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
vue+element 实现商城主题开发的示例代码
Mar 26 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
JavaScript事件处理器中的event参数使用介绍
2013/05/24 Javascript
JS简单的图片放大缩小的两种方法
2013/11/11 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
jQuery表格插件datatables用法汇总
2016/03/29 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
Javascript实现通过选择周数显示开始日和结束日的实现代码
2016/05/30 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
AngularJS 表达式详解及实例代码
2016/09/14 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
[33:15]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VP VS Mineski
2018/03/31 DOTA
在MAC上搭建python数据分析开发环境
2016/01/26 Python
python sort、sort_index方法代码实例
2019/03/28 Python
详解Python 字符串相似性的几种度量方法
2019/08/29 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
高级运动鞋:GREATS
2019/07/19 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
一道SQL存储过程面试题
2016/10/07 面试题
项目合作计划书
2014/01/09 职场文书
学生思想表现的评语
2014/01/30 职场文书
成人继续教育实施方案
2014/03/01 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
会议邀请函
2015/01/30 职场文书
学习保证书100字
2015/02/26 职场文书
小学大队长竞选稿
2015/11/20 职场文书
2016圣诞节贺卡寄语
2015/12/07 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书