在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 相关文章推荐
网页自动跳转代码收集
Sep 27 Javascript
TextArea 控件的最大长度问题(js json)
Dec 16 Javascript
js hover 定时器(实例代码)
Nov 12 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
JavaScript制作弹出层效果
Dec 02 Javascript
Websocket协议详解及简单实例代码
Dec 12 Javascript
浅谈javascript的闭包
Jan 23 Javascript
Vue2.0组件间数据传递示例
Mar 07 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
基于javaScript的this指向总结
Jul 22 Javascript
vue下拉列表功能实例代码
Apr 08 Javascript
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
咖啡的传说和历史
2021/03/03 新手入门
PHP的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
php的memcached客户端memcached
2011/06/14 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
php实现微信扫码支付
2017/03/26 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
AngularJs实现ng1.3+表单验证
2015/12/10 Javascript
js实现图片轮播效果
2015/12/19 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
Angular 5.x 学习笔记之Router(路由)应用
2018/04/08 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
[02:32]DOTA2完美大师赛场馆静安体育中心观赛全攻略
2017/11/08 DOTA
在Python中关于中文编码问题的处理建议
2015/04/08 Python
Python实现字典依据value排序
2016/02/24 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python 调用 zabbix api的方法示例
2019/01/06 Python
浅谈Python中(&,|)和(and,or)之间的区别
2019/08/07 Python
基于python 取余问题(%)详解
2020/06/03 Python
通过cmd进入python的步骤
2020/06/16 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
需求分析说明书
2014/05/09 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
2014年建筑工作总结
2014/11/26 职场文书
家长意见书
2015/06/04 职场文书