判断是否触发value函数}el.__click_outside__=eventHandleron(document,'click',eventHandler)},beforeUnmount(el){if(typeofel.__click_outside__==='function'){off(document,'click',el.__click_outside__)}},}exportdefaultclickOutside
方案一 使用vueuse提供的onClickOutside函数 如下代码: <template>你好啊</template>import{onClickOutside}from'@vueuse/core'import{ref}from"vue";consttarget=ref(null)onClickOutside(target,(event)=>{console.log('点击外部区域',event)}) 官方文档地址: https://vueuse.org/core/onClickOutside/v...
v-clickoutside的基本实现步骤 定义指令:在Vue3中,可以通过app.directive方法定义一个全局指令,或者通过组件的directives选项定义一个局部指令。 添加事件监听:在指令的mounted钩子中,为document对象添加点击事件监听器。 检查点击位置:在事件监听器中,检查点击事件的目标元素是否不在指令绑定的元素内部。如果是,则执行回调...
import { on, off } from '@/utils/domUtils' const clickOutside = { mounted(el, binding) { function eventHandler(e) { // 对el和binding进行处理,判断是否触发value函数 } el.__click_outside__ = eventHandler on(document, 'click', eventHandler) }, beforeUnmount(el) { if(typeof el.__c...
效果图Vue3中方案一 使用vueuse提供的onClickOutside函数方案二 使用element-plus提供的ClickOutside自定义指令Vue2中方案三 使用element-ui提供的Clickoutside自定义指令方案四 使用npm包v-click-outside方案五 阻止内部的div的冒泡事件 @click.stop ▲ 引用和评论 ...
三、Vue2中使用v-click-outside的方法 在Vue2中使用v-click-outside,通常需要借助第三方插件或手动编写指令。虽然能够实现相应功能,但在代码编写和维护方面存在一定的不便。 四、Vue3中v-click-outside的写法 在Vue3中,v-click-outside指令已经成为了Vue.js冠方提供的一个内置指令,使用起来更加方便和简洁。 4.1...
在开发组件时,常需处理下拉框或模态框的显示隐藏逻辑,确保点击元素外可相应操作。本文深入解析 Vue3 自定义指令 ClickOutside 实现,通过阅读 Element-Plus 和 naive-ui-admin 源码,总结经验,以便更好地理解实现细节。先简要介绍工具函数 on 和 off,用于事件绑定和解除。它们提供简洁的事件管理方式,...
vue3 自定义指令 v-click-outside export default function registerDirectives(app: App) { app.directive('click-outside', { mounted(el: any, bindings: any) { el.handler = function (e: any) { if (!el.contains(e.target)) { bindings.value(e) } } document.addEventListener('click', el....
ClickOutside指令可以用于检测用户是否点击了组件外部的区域。这在一些情况下非常有用,例如当我们希望在点击组件外部时关闭弹出窗口或下拉菜单。 在Vue2中,我们通常需要手动编写一个指令来实现这样的功能。但在Vue3的Script Setup中,我们可以直接使用现成的ClickOutside指令,而不需要额外的代码。 首先,我们需要在组件的...
Vue3 指令推荐 1.v-click-outside指令用于检测用户是否点击指定元素之外的区域,并在检测到该事件时触发相应的回调函数。 示例: <template>Clickanywhereoutsidethisboxtotriggerthecallbackfunction.</template>import{ref}from'vue'import{useClickOutside}from'@vueuse/core'exportdefault{setup(){constcontainer=ref...