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事件问题
Sep 05 Javascript
在表单提交前进行验证的几种方式整理
Jul 31 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 Javascript
仿百度换肤功能的简单实例代码
Jul 11 Javascript
plupload+artdialog实现多平台上传文件
Jul 19 Javascript
BootStrap modal模态弹窗使用小结
Oct 26 Javascript
基于JS设计12306登录页面
Dec 28 Javascript
AngularJS实现select的ng-options功能示例
Jul 12 Javascript
在vue中使用echarts(折线图的demo,markline用法)
Jul 20 Javascript
Js跳出两级循环方法代码实例
Sep 22 Javascript
JS绘图Flot如何实现可选显示曲线图功能
Oct 16 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实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
JQuery循环滚动图片代码
2011/12/08 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
详解vue-cli脚手架中webpack配置方法
2018/08/22 Javascript
Javascript中绑定click事件的四种方式介绍
2018/10/26 Javascript
python实现超简单端口转发的方法
2015/03/13 Python
Python监控主机是否存活并以邮件报警
2015/09/22 Python
python基础教程之五种数据类型详解
2017/01/12 Python
django 多数据库配置教程
2018/05/30 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
深入浅析python的第三方库pandas
2020/02/13 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
纯DOM+CSS3实现简单的小风车动画
2016/09/27 HTML / CSS
使用CSS3的ruby-position固定注音位置的用法示例
2016/07/05 HTML / CSS
美国顶级品牌男士大码服装店:DXL
2017/08/30 全球购物
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
旅游网创业计划书
2014/01/31 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
留守儿童工作方案
2014/06/02 职场文书
大学生毕业求职信
2014/06/12 职场文书
检讨书格式范文
2015/05/07 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang