在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中string 的replace
Apr 12 Javascript
我的Node.js学习之路(二)NPM模块管理
Jul 06 Javascript
JavaScript中的object转换成number或string规则介绍
Dec 31 Javascript
jquery实现浮动的侧栏实例
Jun 25 Javascript
基于JavaScript实现智能右键菜单
Mar 02 Javascript
angularjs中ng-attr的用法详解
Dec 31 Javascript
BootStrap 表单控件之单选按钮水平排列
May 23 Javascript
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
vue递归组件实战之简单树形控件实例代码
Aug 27 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 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
全国FM电台频率大全 - 2 天津市
2020/03/11 无线电
PHP stripos()函数及注意事项的分析
2013/06/08 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
一些不错的js函数ajax
2008/08/20 Javascript
jquery图片放大功能简单实现
2013/08/01 Javascript
javascript进行四舍五入方法汇总
2014/12/16 Javascript
JavaScript控制按钮可用或不可用的方法
2015/04/03 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
jQuery实现标签页效果实战(4)
2017/02/08 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
2017/09/19 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
python 实现插入排序算法
2012/06/05 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python中文编码与json中文输出问题详解
2018/08/24 Python
基于Python对数据shape的常见操作详解
2018/12/25 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
Python求凸包及多边形面积教程
2020/04/12 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
中专毕业生自荐信范文
2013/11/28 职场文书
高一家长会邀请函
2014/01/12 职场文书
新护士岗前培训制度
2014/02/02 职场文书
读书活动总结范文
2014/04/26 职场文书
解放思想演讲稿
2014/09/11 职场文书
小学教师师德师风个人整改措施
2014/09/18 职场文书
区域销售经理岗位职责
2015/04/02 职场文书
jQuery实现影院选座订座效果
2021/04/13 jQuery
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
整理Python中常用的conda命令操作
2021/06/15 Python