1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Vue2.js:v-click-outside自定义指令和vue-click-outside监听鼠标点击元素外部区域事件

Vue2.js:v-click-outside自定义指令和vue-click-outside监听鼠标点击元素外部区域事件

时间:2022-06-09 13:39:27

相关推荐

Vue2.js:v-click-outside自定义指令和vue-click-outside监听鼠标点击元素外部区域事件

自定义指令 v-click-outside

文档

https://v2./v2/guide/custom-directive.html

v-click-outside 可以实现点击外部区域才触发事件

实现代码

<template><div class="TestClickOutside"><divclass="TestClickOutside__inner"v-click-outside="handleClickOutside"></div></div></template><script>// created at -08-25export default {name: 'TestClickOutside',props: {},components: {},data() {return {}},directives: {'click-outside': {bind(el, binding, vnode) {console.log('bind')function eventHandler(e) {if (el.contains(e.target)) {return false}// 如果绑定的参数是函数,正常情况也应该是函数,执行if (binding.value && typeof binding.value === 'function') {binding.value(e)}}// 用于销毁前注销事件监听el.__click_outside__ = eventHandler// 添加事件监听document.addEventListener('click', eventHandler)},unbind(el, binding, vnode) {console.log('unbind')// 移除事件监听document.removeEventListener('click', el.__click_outside__)// 删除无用属性delete el.__click_outside__},},},methods: {handleClickOutside() {console.log('handleClickOutside')},},created() {},}</script><style lang="less"></style><style lang="less" scoped>.TestClickOutside__inner {width: 100px;height: 100px;background-color: #666666;}</style>

vue-click-outside

文档

github /vue-bulma/click-outside

安装

$ npm install vue-click-outside

<template><div class="TestClickOutside"><divclass="TestClickOutside__inner"v-click-outside="handleClickOutside"></div></div></template><script>// created at -08-25import ClickOutside from 'vue-click-outside'export default {name: 'TestClickOutside',props: {},components: {},data() {return {}},directives: {ClickOutside },computed: {},methods: {handleClickOutside() {console.log('handleClickOutside')},},created() {},}</script><style lang="less"></style><style lang="less" scoped>.TestClickOutside__inner {width: 100px;height: 100px;background-color: #666666;}</style>

参考

vue 解除鼠标的监听事件的方法

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。