Vue.js中的ClickOutside指令用于检测点击的位置,如果点击的位置不是指定元素或其子元素,则会触发指令绑定的函数。
// 定义指令
Vue.directive('click-outside', {
bind: function (el, binding, vnode) {
el.clickOutsideEvent = function (event) {
if (!(el == event.target || el.contains(event.target))) {
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent)
},
unbind: function (el) {
document.body.removeEventListener('click', el.clickOutsideEvent)
},
});
使用方法如下:
在Vue实例中定义一个函数,用于处理点击事件:
methods: { handleClickOutside (e) { // 处理点击事件 } }在Vue实例中使用指令:
- 点击div外的元素,handleClickOutside函数即可被触发。