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 相关文章推荐
js中函数调用的两种常用方法使用介绍
Jul 17 Javascript
JavaScript实现Iterator模式实例分析
Jun 09 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
Jan 15 Javascript
node.js 动态执行脚本
Jun 02 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
js 判断登录界面的账号密码是否为空
Feb 08 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
Jul 07 Javascript
详解Vue2.0 事件派发与接收
Sep 05 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
微信小程序使用for循环动态渲染页面操作示例
Dec 25 Javascript
vue+vuex+json-seiver实现数据展示+分页功能
Apr 11 Javascript
jQuery中使用validate插件校验表单功能
May 24 jQuery
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
DSP接收机前端设想
2021/03/02 无线电
PHP eval函数使用介绍
2013/12/08 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
用javascript实现给图片加链接
2007/08/15 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
使用documentElement正确取得当前可见区域的大小
2014/07/25 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
js仿搜狐视频记录片列表展示效果
2020/05/30 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
Node调用Java的示例代码
2017/09/20 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
在VUE中实现文件下载并判断状态的方法
2019/11/08 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
2020/07/26 Javascript
python 简易计算器程序,代码就几行
2009/08/29 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
Django 视图层(view)的使用
2018/11/09 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
基于Python的OCR实现示例
2020/04/03 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
创业者迈进成功第一步:如何写创业计划书?
2014/03/22 职场文书
国庆节演讲稿范文2014
2014/09/19 职场文书
高中生逃课检讨书
2014/10/10 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
单身狗福利?Python爬取某婚恋网征婚数据
2021/06/03 Python
Oracle查看表空间使用率以及爆满解决方案详解
2022/07/23 Oracle