VUE_vue2/3点击区域外触发方法,点击除某个元素触发监听
Vue2
1、自定义指令
// 自定义指令,用于处理点击外部区域的事件
const clickOutside = {bind(el, binding) {// 在元素上绑定一个点击事件监听器el.clickOutsideEvent = function (event) {// 检查点击事件是否发生在元素的内部if (!(el === event.target || el.contains(event.target))) {// 如果点击事件发生在元素的外部,则触发指令绑定的方法binding.value(event);}};// 在文档上添加点击事件监听器document.addEventListener("click", el.clickOutsideEvent);},unbind(el) {// 在元素上解除点击事件监听器document.removeEventListener("click", el.clickOutsideEvent);},
}
2、注册自定义指令
export default{directives: {"click-outside": clickOutside, // 注册自定义指令},
}
示例
<template><div class="container"><div v-click-outside="handleBlur">当点击该元素以外的地方时,将触发handleBlur方法</div></div>
</template>
<script>
// 自定义指令,用于处理点击外部区域的事件
const clickOutside = {bind(el, binding) {// 在元素上绑定一个点击事件监听器el.clickOutsideEvent = function (event) {// 检查点击事件是否发生在元素的内部if (!(el === event.target || el.contains(event.target))) {// 如果点击事件发生在元素的外部,则触发指令绑定的方法,将点击的event数据传过去binding.value(event);}};// 在文档上添加点击事件监听器document.addEventListener("click", el.clickOutsideEvent);},unbind(el) {// 在元素上解除点击事件监听器document.removeEventListener("click", el.clickOutsideEvent);},
};
export default {directives: {"click-outside": clickOutside, // 注册自定义指令},name: "test",data() {return {};},methods: {//点击其它区域handleBlur(event) {console.log("点击其它区域啦",event);},}
}
</script>
此时,点击绑定该方法外的区域就会触发该方法啦。不用再用原生单独一个个绑定了
Vue3
因为在 Vue 3 的自定义指令中,生命周期钩子函数的命名和用法已经发生了变化。Vue 3 引入了新的生命周期钩子函数,取代了 Vue 2 中的 bind 和 unbind,所以自定义指令部分v3和v2的写法不一样。下面是v3的自定义指令部分,和v3的整体代码。
当前示例为选项式api,组合式api方式相同
1、自定义指令
// 自定义指令,用于处理点击外部区域的事件
const clickOutside = {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);},
}
2、注册自定义指令
export default{directives: {"click-outside": clickOutside, // 注册自定义指令},
}
示例
<template><div class="container"><div v-click-outside="handleBlur">当点击该元素以外的地方时,将触发handleBlur方法</div></div>
</template><script>
// 自定义指令,用于处理点击外部区域的事件
const clickOutside = {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);},
}
export default {directives: {"click-outside": clickOutside, // 注册自定义指令},name: "test",data() {return {};},methods: {//点击其它区域handleBlur(event) {console.log("点击其它区域啦", event);},},
}
</script>
相关文章:
VUE_vue2/3点击区域外触发方法,点击除某个元素触发监听
Vue2 1、自定义指令 // 自定义指令,用于处理点击外部区域的事件 const clickOutside {bind(el, binding) {// 在元素上绑定一个点击事件监听器el.clickOutsideEvent function (event) {// 检查点击事件是否发生在元素的内部if (!(el event.target || el.contai…...
SpringCloud(20)之Skywalking Agent原理剖析
一、Agent原理剖析 使用Skywalking的时候,并没有修改程序中任何一行 Java 代码,这里便使用到了 Java Agent 技术,我 们接下来展开对Java Agent 技术的学习。 1.1 Java Agent Java Agent 是从 JDK1.5 开始引入的,算是一个比较老的…...
容器(0)-DOCKERFILE-安装-常用命令-部署-迁移备份-仓库
1.安装 启动 systemclt start docker //启动 systemctl status docker //状态 docker info systemclt stop docker systemctl status docker systemctl enable docker //开机启动 2.常用命令 镜像查看 docker images 镜像查看 docker status 镜像拉取 docker pull centos:…...
低功耗DC-DC电压调整器IU5528D
IU5528D是一款超微小型,超低功耗,高效率,升降压一体DC-DC调整器。适用于双节,三节干电池或者单节锂电池的应用场景。可以有效的延长电池的使用时间。IU5528D由电流模PWM控制环路,误差放大器,比较器和功率开关等模块组成。该芯片可在较宽负载范围内高效稳…...
【备战蓝桥杯系列】单源最短路径Dijkstra算法模板
Dijkstra算法模板 蓝桥杯中也是会考到图论最短路的,一旦考到,基本是不会太难的,只要知道板子就基本能拿分了。 两个板子如下 朴素Dijkstra算法 适应情况:稠密图,正权边 时间复杂度 O(n^2 m) int dijkst(){memse…...
嵌入式系统中端口号的理解与分析
每当看到有人的简历上写着熟悉 tcp/ip, http 等协议时, 我就忍不住问问他们: 你给我说说, 端口是啥吧! 可惜, 很少有人能说得让人满意... 所以这次就来谈谈端口(port), 这个熟悉的陌生人. 在此过程中, 还会谈谈间接层, naming service 等概念, IoC, 依赖倒置等原则以及 TCP 协议…...
3.自定义工程目录配置CMakeLists
问题背景 熟悉stm32keil开发的都知道,我们在编写不同的外设时,通常都会单独编写一个app文件夹或者是user文件夹之类的来存放不同外设功能的源文件和头文件。 在前面一节2.构建第一个工程并烧录到ESP32开发板-CSDN博客中,我们是使用了一个乐鑫…...
Vue3.0里为什么要用 Proxy API 替代 defineProperty API
一、Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性,并返回此对象 为什么能实现响应式 通过defineProperty 两个属性,get及set get 属性的 getter 函…...
c++初阶------类和对象(下)
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
PMP考试:如何高效学习PMBOK?
PMBOK(项目管理知识体系指南)是PMP考试的核心教材,学习PMBOK对于备考PMP考试至关重要。那么我将分享一些高效学习PMBOK的方法和技巧,帮助同学们更好地掌握项目管理知识。 一、制定学习计划 在学习PMBOK之前,制定一个详…...
个人博客网站前端页面的实现
博客网站前端页面的实现 博客登录页 相关代码 login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...
Kotlin Retrofit 网络请求
一、添加依赖: //Retrofit 网络请求implementation("com.squareup.retrofit2:retrofit:2.3.0")implementation("com.squareup.retrofit2:converter-gson:2.3.0")//json转换 二、创建单例类: package com.example.buju.httpimport …...
pyside6 pytq PyDracula QVideoWidget视频只有声音没有画面
解决方案: 先不使用框架,纯pyside6代码,如果添加视频有画面有声音,那可以排除是硬件问题,如果没有画面只有声音,可能是视频解码器无法解码,换个格式的视频文件如果只有使用PyDracula 出问题&am…...
Python爬网页,不确定网页的编码,不需要用第三方库
Python爬网页,不确定网页的编码,不需要用第三方库,自己写个判断,乱拳打死老师傅 detect试了,不好用 apparent_encoding试了,不好用 encoding试了,不好用 headers里get试了,不好用…...
Web测试的基础流程(外加测试过程需要的注意5点)
前言 在Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的系统测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示是否合适。 重要的是…...
项目解决方案:视频监控接入和录像系统设计方案(下)
目 录 1.概述 2. 建设目标及需求 2.1建设总目标 2.2 需求描述 2.3 需求分析 3.设计依据与设计原则 3.1设计依据 3.2 设计原则 4.建设方案设计 4.1系统方案设计 4.2组网说明 5.产品介绍 5.1视频监控综合资源管理平台介绍 5.2视频录像服务器和存储 5.2.…...
Python爬虫-使用Prefect框架实现一个可视化爬虫项目
前言 本文是该专栏的第19篇,后面会持续分享python爬虫干货知识,记得关注。 相信有的同学,在处理爬虫项目的时候,有时也会需要你将爬虫项目进行一个可视化展示,方便管理者能及时详细的了解当前爬虫任务的执行进度以及执行情况,甚至需要做一个爬虫监控预警的可视化任务。 …...
[hive面试真题]-基础理论篇
hive的工作流程 hive中分区表,分桶表 工作中hive分区表的应用示例 发现hive分区中的数据不对怎么处理 hive出现code 1 2 3 什么原因 ,怎么处理 工作中hive常见的文件格式 .压缩格式 工作时常用的hive函数 谈谈对窗口函数的理解 hive中如果出现数据倾斜 ,怎么发现 ,怎么…...
【其他】sd卡的照片在相机上能看到在电脑上却看不到
sd卡的照片在相机上能看到在电脑上却看不到 前情提要:太长不看版解决办法:思路:一、首先考虑恢复数据二、 解决文件后缀是exe的问题 前情提要: 在相机里可以看到照片和视频,但是SD卡通过读卡器插入电脑看不到&#x…...
Linux 之六:系统性能监控和挂载
系统性能 Linux系统中,有许多命令用于监测和分析性能指标。以下是一些常用的Linux性能分析命令: top:实时查看并监控CPU、内存以及各个进程的资源占用情况。htop(需要安装):一个增强版的 top 命令&#x…...
开源风扇控制工具本地化:3步实现专业级中文界面
开源风扇控制工具本地化:3步实现专业级中文界面 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCo…...
终极指南:如何实现北京理工大学校园网自动登录与断线重连
终极指南:如何实现北京理工大学校园网自动登录与断线重连 【免费下载链接】BIT-srun-login-script 北京理工大学深澜校园网登录脚本,以实现命令行登录或者断线重连等,仅提供登录功能 项目地址: https://gitcode.com/gh_mirrors/bi/BIT-srun…...
Keil5 项目文件管理实战:从零构建高效开发环境
1. 为什么需要规范化的Keil5项目管理 刚开始接触嵌入式开发时,我最常犯的错误就是把所有代码文件胡乱堆砌在同一个文件夹里。直到某天需要修改半年前的项目,才发现根本分不清哪些是核心代码、哪些是临时测试文件。这种混乱的项目结构不仅影响开发效率&a…...
SeqGPT-560M效果展示:无需训练的中文文本理解,财经/科技/娱乐分类实测案例
SeqGPT-560M效果展示:无需训练的中文文本理解,财经/科技/娱乐分类实测案例 今天我们来聊聊一个特别省心的AI工具——SeqGPT-560M。你可能听说过很多大模型,但训练它们往往需要准备数据、调参数,费时费力。SeqGPT-560M不一样&…...
暗黑破坏神2终极单机增强插件:PlugY完全指南,三步搞定无限仓库与技能重置
暗黑破坏神2终极单机增强插件:PlugY完全指南,三步搞定无限仓库与技能重置 【免费下载链接】PlugY PlugY, The Survival Kit - Plug-in for Diablo II Lord of Destruction 项目地址: https://gitcode.com/gh_mirrors/pl/PlugY 你是否曾经在暗黑破…...
中兴光猫终极管理工具:zteOnu工厂模式与Telnet一键开启指南
中兴光猫终极管理工具:zteOnu工厂模式与Telnet一键开启指南 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu zteOnu是一款专为中兴光猫设备设计的强大管理工具,能…...
第二十五节:Skill的打包、版本控制与社区发布
引言 上一章,我们为Skill精心打造了专业的README文档,这好比为产品准备好了精美的说明书。但要让用户能真正“安装”并使用你的成果,我们还需要完成从本地项目到可分发“产品”的关键转化。本章,我们将聚焦于Skill的打包、版本控制…...
告别命令行!用wsl2distromanager轻松管理多个WSL2发行版(附详细图文)
告别命令行!用WSL2 Distro Manager轻松管理多个WSL2发行版 对于Windows开发者来说,WSL2已经成为日常开发不可或缺的工具。它让我们能在Windows环境下无缝运行Linux环境,享受两全其美的开发体验。然而,随着项目复杂度增加ÿ…...
Kandinsky-5.0-I2V-Lite-5s环境隔离:Anaconda创建独立Python环境部署
Kandinsky-5.0-I2V-Lite-5s环境隔离:Anaconda创建独立Python环境部署 1. 为什么需要环境隔离 在AI模型部署过程中,环境依赖问题是最常见的"拦路虎"之一。想象一下这样的场景:你花了两天时间调试一个模型,好不容易跑通…...
Phi-4-reasoning-vision-15B在研发协作中的应用:代码IDE截图理解与问题定位
Phi-4-reasoning-vision-15B在研发协作中的应用:代码IDE截图理解与问题定位 1. 引言:研发协作中的视觉理解需求 在软件开发团队中,工程师们每天都要处理大量代码截图和IDE界面。当遇到问题时,最常见的做法是把报错截图或代码片段…...
