记录 vue自定义指令 实现展示搜索记录,点击其他区域隐藏

本文详细介绍了如何在Vue中实现点击组件外部区域时关闭组件的功能。通过自定义指令bind和unbind方法,监听文档点击事件,并判断点击目标是否为组件本身。若非组件本身,则调用绑定的函数,如handleClose,实现组件关闭。文章还提到了el.contains(e.target)用于判断点击元素是否为组件元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// const clickoutside = {
//   bind(el, binding,) {
//     function documentHandler(e) {
//   // 这里判断点击的元素是否是本身,是本身,则返回
//       if (el.contains(e.target)) {
//         return false;
//   }
//   // 判断指令中是否绑定了函数
//       if (binding.expression) {
//   // 如果绑定了函数 则调用那个函数,此处binding.value就是handleClose方法
//         binding.value(e);
//       }
//  }
//  // 给当前元素绑定个私有变量,方便在unbind中可以解除事件监听
//     el.__vueClickOutside__ = documentHandler;
//     document.addEventListener('click', documentHandler);
//   },
//   unbind() {
//  // 解除事件监听
//     document.removeEventListener('click', el.__vueClickOutside__);
//     delete el.__vueClickOutside__;
//   },
// };
contains(),只能去判断DOM,不能像Java 那样使用!

转载于:https://www.cnblogs.com/xiaxuening/p/10974787.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值