html 如何在Vue中检测单击外部元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html 如何在Vue中检测单击外部元素相关的知识,希望对你有一定的参考价值。
...
Vue.directive('click-outside', {
bind: function (el, binding, vNode) {
// Provided expression must evaluate to a function.
if (typeof binding.value !== 'function') {
const compName = vNode.context.name
let warn = `[Vue-click-outside:] provided expression '${binding.expression}' is not a function, but has to be`
if (compName) { warn += `Found in component '${compName}'` }
console.warn(warn)
}
// Define Handler and cache it on the element
const bubble = binding.modifiers.bubble
const handler = (e) => {
if (bubble || (!el.contains(e.target) && el !== e.target)) {
binding.value(e)
}
}
el.__vueClickOutside__ = handler
// add Event Listeners
document.addEventListener('click', handler)
},
unbind: function (el, binding) {
// Remove Event Listeners
document.removeEventListener('click', el.__vueClickOutside__)
el.__vueClickOutside__ = null
}
})
...
<template>
<div v-if="menuIsOpen" v-click-outside="mutationIsOpen">
<!-- content -->
<div/>
</template>
以上是关于html 如何在Vue中检测单击外部元素的主要内容,如果未能解决你的问题,请参考以下文章
聚合物:检测自定义元素外部的单击
Vue.js 自定义指令使用 TypeScript 检测点击外部元素
检测是不是使用外部 JavaScript 文件创建了 html 元素
使用 JavaScript e.target 在元素外部单击不起作用
如何检测指令元素是不是*未*在 Angular 中单击
在 Bootstrap 3 中单击导航栏元素外部时如何关闭打开的折叠导航栏?