vue3 自定义指令 v-click-outside

想用v-click-oustside指令,但查询后发现,只有element plus框架才有,其余的如果想用,需要自己创建指令

仅生成一个指令,可以直接在main.js中添加

  • 在main.js中添加指令
const app = createApp(App)
app.directive('click-outside', {
	beforeMount(el, binding) {
		el.clickOutsideEvent = function (event) {
			if (!(el === event.target || el.contains(event.target))) {
				binding.value(event);
			}
		};
		document.addEventListener('click', el.clickOutsideEvent);
	},
	unmounted(el) {
		document.removeEventListener('click', el.clickOutsideEvent);
	}
});

使用

  • html
<div  v-click-outside="outsideClick">
</div>
const outsideClick = (event)=>{
}
  • js
const outsideClick = (event)=>{
// 如果想要在某些dom以内不去触发这个方法 
if (e.target.id == 'xxxxx') return
// 自己的逻辑...
}

方法2 npm

  • 下载依赖

npm install --save v-click-outside

  • 使用
// main.js
import Vue from 'vue'
import vClickOutside from 'v-click-outside'

Vue.use(vClickOutside)
// html
<div v-click-outside="onClickOutside"></div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值