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 相关文章推荐
你可能不再需要JQUERY
Mar 09 Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 Javascript
jQuery登陆判断简单实现代码
Apr 21 Javascript
常见的jQuery选择器汇总
Nov 24 Javascript
JavaScript实现带标题的图片轮播特效
May 20 Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
Extjs4.0 ComboBox如何实现三级联动
May 11 Javascript
关于JS中二维数组的声明方法
Sep 24 Javascript
node.js用fs.rename强制重命名或移动文件夹的方法
Dec 27 Javascript
JavaScript实现文件下载并重命名代码实例
Dec 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
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
2015/06/10 PHP
功能强大的php分页函数
2016/07/20 PHP
php 5.4 全新的代码复用Trait详解
2017/01/05 PHP
TP5框架使用QueryList采集框架爬小说操作示例
2020/03/26 PHP
javascript 常用方法总结
2009/06/03 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
javascript制作的网页侧边弹出框思路及实现代码
2014/05/21 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
javascript实现炫酷的拖动分页
2015/05/11 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
有关Python的22个编程技巧
2018/08/29 Python
使用layui实现左侧菜单栏及动态操作tab项的方法
2020/11/10 HTML / CSS
S’well Bottle保温杯官网:绝缘不锈钢水瓶
2018/05/09 全球购物
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
NULL是什么,它是怎么定义的
2015/05/09 面试题
水毁工程实施方案
2014/04/01 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
上课讲话检讨书范文
2015/05/07 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
pandas中关于apply+lambda的应用
2022/02/28 Python
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis