https://vueuse.org/core/onClickOutside/vueuse.org/core/onClickOutside/ 方案二 使用element-plus提供的ClickOutside自定义指令 如下代码: <template>你好啊</template>import{ClickOutsideasvC}from'element-plus'constfn=()=>{console.log('点击外部区域')} 可在node_modules文件夹中的对应的element-p...
off(document, 'click', el.__click_outside__) } }, } export default clickOutside 我们在指令挂载的时候,给document定义并且绑定了一个eventHandler处理函数,并且挂载到元素的__click_outside__属性,方便在卸载的时候进行事件取消绑定。 eventHandler函数只能放到指令中定义,否则获取不到el和binding。 在使用cl...
v-clickoutside的基本实现步骤 定义指令:在Vue3中,可以通过app.directive方法定义一个全局指令,或者通过组件的directives选项定义一个局部指令。 添加事件监听:在指令的mounted钩子中,为document对象添加点击事件监听器。 检查点击位置:在事件监听器中,检查点击事件的目标元素是否不在指令绑定的元素内部。如果是,则执行回调...
效果图Vue3中方案一 使用vueuse提供的onClickOutside函数方案二 使用element-plus提供的ClickOutside自定义指令Vue2中方案三 使用element-ui提供的Clickoutside自定义指令方案四 使用npm包v-click-outside方案五 阻止内部的div的冒泡事件 @click.stop ▲ 引用和评论 ...
本文应该是全网最深入的对自定义指令ClickOutside的解读,文章内容较长,觉得有所收获的记得点赞关注收藏,一键三连。 工具函数 首先是on和off函数,在naive-ui-admin中用来给函数注册绑定和解除绑定事件 export function on( element: Element | HTMLElement | Document | Window, event: string, handler: EventListene...
在Vue2中使用v-click-outside,通常需要借助第三方插件或手动编写指令。虽然能够实现相应功能,但在代码编写和维护方面存在一定的不便。 四、Vue3中v-click-outside的写法 在Vue3中,v-click-outside指令已经成为了Vue.js冠方提供的一个内置指令,使用起来更加方便和简洁。 4.1 安装v-click-outside插件 在Vue3项目...
VUE - vue3 自定义指令 consthideDiv = () => visCardRef.value =false; //自定义指令constvClickOutside ={ beforeMount(el: any, binding: any) { debugger; let clickOutsideEvent= (event: any) =>{ debugger;//点击外部时触发if(!(el ===event.target ...
在开发组件时,常需处理下拉框或模态框的显示隐藏逻辑,确保点击元素外可相应操作。本文深入解析 Vue3 自定义指令 ClickOutside 实现,通过阅读 Element-Plus 和 naive-ui-admin 源码,总结经验,以便更好地理解实现细节。先简要介绍工具函数 on 和 off,用于事件绑定和解除。它们提供简洁的事件管理方式,...
ClickOutside指令可以用于检测用户是否点击了组件外部的区域。这在一些情况下非常有用,例如当我们希望在点击组件外部时关闭弹出窗口或下拉菜单。 在Vue2中,我们通常需要手动编写一个指令来实现这样的功能。但在Vue3的Script Setup中,我们可以直接使用现成的ClickOutside指令,而不需要额外的代码。 首先,我们需要在组件的...
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....