在Vue组件中获取全局的点击事件方法


Posted in Javascript onSeptember 06, 2018

使用场景:

在Vue组件中点击某元素之外的地方移除该元素

在Vue组件中获取全局的点击事件方法

需求:

如上图所示,“用户列表”页面有三个Vue组件组成,分别是“菜单组件”,“导航组件”和“列表组件”。其中“列表组件”中包含一个“下拉菜单”,当我们点击“下拉菜单”以外的区域隐藏下拉菜单。

解决方法一:

出现“下拉菜单”的同时,建一个透明的遮罩层,然后只有“下拉菜单”可以点,点击遮罩层就隐藏。

缺点:z-index层数要控制好,还有就是如果点击其他功能按钮,会失效,因为有遮罩层,导致要点击两次才有效。

解决方法二:

局部监听,给“列表组件”最外层的盒子加个点击事件,隐藏下拉菜单。并且对“下拉菜单”的事件要阻止事件冒泡。

缺点:点击“列表组件”区域有效,点击“菜单组件”和“导航组件”区域无效。

解决方法三(推荐):

第一步:定义Vue全局点击函数

// 定义全局点击函数
Vue.prototype.globalClick = function (callback) {
 document.getElementById('main').onclick = function () {
 callback();
 };
};

tips:

1、参数为点击的回调函数。

2、Vue中通过getElementsByTagName获取不到body节点,还不知道是什么原因。

第二步:在组件中监听全局的点击事件

mounted: function () {
 this.globalClick(this.moreSetupMenuRemove);
}

tips:mounted是Vue生命周期钩子中的DOM渲染完成阶段。

第三步:进行操作

// 移除操作
moreSetupMenuRemove () {
 this.$refs.moreSetupMenu.style.display = 'none';
},

如果有更好的方法,欢迎交流!

以上这篇在Vue组件中获取全局的点击事件方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 变量作用域 两个可能会被忽略的小特性
Mar 23 Javascript
seajs中模块的解析规则详解和模块使用总结
Mar 12 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
May 20 Javascript
JavaScript中用let语句声明作用域的用法讲解
May 20 Javascript
使用开源工具制作网页验证码的方法
Oct 17 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 Javascript
js仿淘宝放大镜效果
Dec 28 Javascript
使用AutoJs实现微信抢红包的代码
Dec 31 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
vue 实现上传组件
May 31 Vue.js
jQuery实现基本动画效果的方法详解
Sep 06 #jQuery
JavaScript函数、闭包、原型、面向对象学习笔记
Sep 06 #Javascript
Vue中使用clipboard实现复制功能
Sep 05 #Javascript
vue-cli3.0配置及使用注意事项详解
Sep 05 #Javascript
Vue-cli@3.0 插件系统简析
Sep 05 #Javascript
vue实现点击选中,其他的不选中方法
Sep 05 #Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
Sep 05 #Javascript
You might like
生成sessionid和随机密码的例子
2006/10/09 PHP
asp和php下textarea提交大量数据发生丢失的解决方法
2008/01/20 PHP
PHP仿盗链代码
2012/06/03 PHP
php网页病毒清除类
2014/12/08 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
php+ajax实现无刷新动态加载数据技术
2015/04/28 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
javascript跨域刷新实现代码
2011/01/01 Javascript
JavaScript实现可拖拽的拖动层Div实例
2015/08/05 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
websocket+node.js实现实时聊天系统问题咨询
2017/05/17 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python 为什么说eval要慎用
2019/03/26 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
奥地利网上书店:Weltbild
2017/07/14 全球购物
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
世界上最大的乐谱选择:Sheet Music Plus
2020/01/18 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
网络教育自我鉴定
2014/02/04 职场文书
医学生职业生涯规划书范文
2014/03/13 职场文书
活动总结报告格式
2014/05/09 职场文书
学生不讲诚信检讨书
2014/09/29 职场文书
2015年党员自我剖析材料
2014/12/17 职场文书
捐书仪式主持词
2015/07/04 职场文书
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫
Python之matplotlib绘制折线图
2022/04/13 Python