wot-design
Version:
Mobile UI components built on vue.js
39 lines (33 loc) • 925 B
JavaScript
;
exports.__esModule = true;
exports.default = void 0;
/**
* v-clickoutsid
* @desc 点击元素外面才会触发的事件
* @example
* ```vue
* <div v-clickoutside="close">
* ```
*/
var clickoutside = {
// 初始化指令
bind: function bind(el, binding, vnode) {
function documentHandler(e) {
if (el.contains(e.target)) {
return false;
} // 判断指令中是否绑定了函数
if (binding.value) {
binding.value(e);
}
} // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听
el.__vueClickOutside__ = documentHandler;
document.addEventListener('click', documentHandler);
},
unbind: function unbind(el, binding) {
// 解除事件监听
document.removeEventListener('click', el.__vueClickOutside__);
delete el.__vueClickOutside__;
}
};
var _default = clickoutside;
exports.default = _default;