当前位置: 首页 > news >正文

vue3中,拦截双击事件的第一次点击,写一些逻辑

在 Vue 3 中,如果想要拦截双击事件的第一次点击并执行一些逻辑,你可以使用一个状态变量来跟踪第一次点击事件,并在第二次点击时阻止第一次点击逻辑的执行。以下是一个实现示例:

<template><div@mousedown="handleMouseDown"@dblclick="handleDoubleClick">双击这个区域</div>
</template><script setup>
import { ref } from 'vue';// 定义一个变量来跟踪第一次点击事件是否在冷却期内
const isCoolingDown = ref(false);function handleMouseDown(event) {// 如果不在冷却期内,执行第一次点击的逻辑if (!isCoolingDown.value) {console.log('第一次点击逻辑');// 设置冷却期状态为 true,并在一定时间后重置为 falseisCoolingDown.value = true;setTimeout(() => {isCoolingDown.value = false;}, 300); // 300ms 是双击间隔时间,可以根据实际情况调整}
}function handleDoubleClick(event) {// 如果处于冷却期内,阻止默认的双击事件行为if (isCoolingDown.value) {event.preventDefault();event.stopPropagation();console.log('拦截了第一次点击,执行双击逻辑');} else {// 如果不在冷却期内,执行正常的双击逻辑console.log('执行正常的双击逻辑');}
}
</script>

在这个示例中:

  • 我们使用 ref 来定义 isCoolingDown 状态变量。
  • handleMouseDown 方法用于处理鼠标按下(第一次点击)事件。如果 isCoolingDown 为 false,则执行第一次点击的逻辑,并设置一个300毫秒的冷却期。
  • handleDoubleClick 方法用于处理双击事件。如果 isCoolingDown 为 true,则表示第一次点击逻辑正在冷却期内,我们阻止默认的双击行为并执行自定义的双击逻辑。如果 isCoolingDown 为 false,则执行正常的双击逻辑。

这种方法可以确保在双击事件的第一次点击时执行特定的逻辑,同时在第二次点击时执行另一组逻辑或阻止默认的双击行为。

开发案例:

const isFlag = ref(false);
function handleMouseDown() {console.log('handleMouseDown');if (!isFlag.value) {console.log('第一次点击');isFlag.value = true;// console.log('isFlag.value-1', isFlag.value);setTimeout(() => {isFlag.value = false;// console.log('isFlag.value-2', isFlag.value);}, 300);}
}
function rowClick(event, field) {console.log('event', event, 'field', field);if (isFlag.value) {event.preventDefault();event.stopPropagation();console.log('拦截了第一次点击,并执行双击逻辑');} else {console.log('执行双击逻辑');}// 以下是双击的逻辑field.Selected = true;props.rowClickCB(event,Object.assign(new Cell(), { TableField: field, TableInfo: props.TableInfo }));
}
<div:class="item.Selected ? 'row' : ''"@contextmenu.prevent="fieldMenu($event, TableInfo, item)"@click="selectField(activeList, item, startNum + index)"@dblclick="rowClick($event, item)"@mousedown="handleMouseDown"style="display: flex; justify-content: space-around">

 开发案例中,到目前为止,可以成功拦截第一次点击,但是需要注意的是,需要双击的频率在合适(双击频率要在300ms内点击第二次)的情况下才会拦截第一次点击,在里面写你要的TODO逻辑即可。(如果双击频率稳定在某个范围(凭感觉),就会走到else {console.log('执行双击逻辑');}),所以双击逻辑放到 if 外面就能都走到,目的是拦截第一次点击做一些操作而已。

如果需要每次双击都拦截到第一次点击,可以调一下定时器的时间即可,可以调到500ms,一般人双击的频率都可以在500ms点击第二次。但是超过500ms之后点击第二次的话也不会拦截到第一次点击。

 

相关文章:

vue3中,拦截双击事件的第一次点击,写一些逻辑

在 Vue 3 中&#xff0c;如果想要拦截双击事件的第一次点击并执行一些逻辑&#xff0c;你可以使用一个状态变量来跟踪第一次点击事件&#xff0c;并在第二次点击时阻止第一次点击逻辑的执行。以下是一个实现示例&#xff1a; <template><divmousedown"handleMou…...

落地 ZeroETL 轻量化架构,ByteHouse 推出“四个一体化”策略

在数字化转型的浪潮中&#xff0c;数据仓库作为企业的核心数据资产&#xff0c;其重要性日益凸显。随着业务范围扩大&#xff0c;企业也会使用不同的数据仓库来管理、维护相关数据。研发人员需要花费大量时间和精力&#xff0c;从中导出数据&#xff0c;然后进行手动整理、转换…...

如何提高LabVIEW编程效率

提高LabVIEW编程效率对开发者来说非常重要&#xff0c;尤其是在处理复杂项目或紧迫的开发周期时。以下是一些可以显著提升LabVIEW编程效率的技巧&#xff0c;从代码结构、工具使用到团队协作的多个角度进行详细分析&#xff1a; 1. 模块化设计 模块化设计 是提高代码可维护性和…...

Android 开发 TabLayout 自定义指示器长度

前言 原生 TabLayout 的指示器长度是充满整个屏幕的&#xff0c;但在实际开发中 UI 会设计成 指示器的长度等于或者小于标题字体长度&#xff0c;如图 如果设置成跟字体长度一样即使用 API: mTabLayout.setTabIndicatorFullWidth(false);或者在 xml 布局文件中的TabLayout标签…...

构造mex(牛客周赛 Round 59)

题目链接&#xff1b; D-构造mex_牛客周赛 Round 59 (nowcoder.com) 题目描述&#xff1a; 输出和输出描述&#xff1a; 输入样例&#xff1a; 3 6 3 3 7 4 3 6 6 0 输出样例&#xff1a; NO YES 4 0 1 2 YES 1 1 1 1 1 1 分析&#xff1a; 数学思维题&#xff0c;赛后看了一…...

RabbitMQ 交换机的类型

在 RabbitMQ 中&#xff0c;交换机&#xff08;Exchange&#xff09;是一个核心组件&#xff0c;负责接收来自生产者的消息&#xff0c;并根据特定的路由规则将消息分发到相应的队列。交换机的存在改变了消息发送的模式&#xff0c;使得消息的路由更加灵活和高效。 交换机的类…...

机器人顶会参会经验——许华哲老师PRE-IROS 2024分享

摘要&#xff1a;清华大学交叉信息学院许华哲老师在PRE-IROS 2024上分享了机器人顶会参会技巧&#xff0c;包括社交和活动选择方面的实用建议等内容。本文整理了许老师在直播中分享的干货。 在刚刚过去的PRE-IROS 2024论文预分享会上&#xff0c;清华叉院许华哲老师全方位解析…...

计算机组成原理--一章二章

这里写目录标题 第一章&#xff1a;计算机系统概述计算机的发展计算机的组成计算机的性能指标 第二章&#xff1a;数据的表示和运算2.1进位十进制BCD码无符号整数的表示和运算带符号整数的表示和运算原反补码的特性对比移码定点小数 2.2奇偶校验码算数逻辑运算单元&#xff08;…...

zookeeper kafka集群配置

一.下载安装包 地址&#xff1a;https://download.csdn.net/download/cyw8998/16579797 二.配置文件 zookeeper.properties dataDir/data/kafka/zookeeper_data/zookeeper # the port at which the clients will connect clientPort2181 # disable the per-ip limit on the…...

Java IO 基础知识

IO 流简介 IO 即 Input/Output&#xff0c;输入和输出。数据输入到计算机内存的过程即输入&#xff0c;反之输出到外部存储&#xff08;比如数据库&#xff0c;文件&#xff0c;远程主机&#xff09;的过程即输出。数据传输过程类似于水流&#xff0c;因此称为 IO 流。IO 流在…...

【报错处理】MR/Spark 使用 BulkLoad 方式传输到 HBase 发生报错: NullPointerException

博主希望能够得到大家的点赞收藏支持&#xff01;非常感谢 点赞&#xff0c;收藏是情分&#xff0c;不点是本分。祝你身体健康&#xff0c;事事顺心&#xff01; Spark 通过 BulkLoad 方式传输到 HBase&#xff0c;我发现会出现空指针异常。简单写下如何解决的。 原理&#xf…...

域7:安全运营 第17章 事件的预防和响应

第七域包括 16、17、18、19 章。 事件的预防和响应是安全运营管理的核心环节&#xff0c;对于组织有效识别、评估、控制和减轻网络安全威胁至关重要。这一过程是循环往复的&#xff0c;要求组织不断总结经验&#xff0c;优化策略&#xff0c;提升整体防护能力。通过持续的监测、…...

Linux常见基本指令 +外壳shell + 权限的理解

下面这篇文章主要介绍了一些Linux的基本指令及其周边知识, 以及shell的简单理解和权限的理解. 目录 前言1.基本指令及其周边知识1.1 ADD类touch [file]文件的时间mkdir [directory]cp [file/directory]echo [file]输出重定向Linux中, 一切皆文件 1.2 DELETE类rmdirrm通配符关机…...

Android Framework AMS(07)service组件启动分析-1(APP到AMS流程解读)

该系列文章总纲链接&#xff1a;专题总纲目录 Android Framework 总纲 本章关键点总结 & 说明&#xff1a; 说明&#xff1a;本章节主要解读应用层service组件启动的2种方式startService和bindService&#xff0c;以及从APP层到AMS调用之间的打通。关注思维导图中左侧部分即…...

深度学习:领域适应(Domain Adaptation)详解

领域适应&#xff08;Domain Adaptation&#xff09;详解 领域适应是机器学习中的一个重要研究领域&#xff0c;它解决的问题是模型在一个领域&#xff08;源域&#xff09;上训练得到的知识如何迁移到另一个有所差异的领域&#xff08;目标域&#xff09;上。领域适应特别重要…...

华三服务器R4900 G5在图形界面使用PMC阵列卡(P460-B4)创建RAID,并安装系统(中文教程)

环境以用户需求安装Centos7.9&#xff0c;服务器使用9块900G硬盘&#xff0c;创建RAID1和RAID6&#xff0c;留一块作为热备盘。 使用笔记本通过HDM管理口&#xff08;&#xff09;登录 使用VGA&#xff08;&#xff09;线连接显示器和使用usb线连接键盘鼠标&#xff0c;进行窗…...

Linux实验三

Linux实验三 实验步骤&#xff1a; 一、登录进入 CentOS7 系统&#xff0c;打开并进入终端&#xff0c;使用 su root 切换到 root 用户 &#xff1b; ​​ 二、将主机名称修改为 个人学号&#xff0c;并完成以下操作&#xff1a; 1、使用 uname -a 查看系统内核信息&#x…...

Vue预渲染:深入探索prerender-spa-plugin与vue-meta-info的联合应用

在前端开发的浪潮中&#xff0c;Vue.js凭借其轻量级、易上手和高效的特点&#xff0c;赢得了广大开发者的青睐。然而&#xff0c;单页面应用&#xff08;SPA&#xff09;在SEO方面的短板一直是开发者们需要面对的挑战。为了优化SEO&#xff0c;预渲染技术应运而生&#xff0c;而…...

使用`ThreadLocal`来优化鉴权逻辑并不能直接解决Web应用中session共享的问题

使用ThreadLocal来优化鉴权逻辑并不能直接解决Web应用中session共享的问题。实际上,ThreadLocal和session共享是两个不同的概念,它们解决的问题也不同。 ThreadLocal的作用 ThreadLocal是Java中提供的一个线程局部变量类,它可以让每个线程都拥有一个独立的变量副本,这样线…...

Python implement for PID

Python&#xff0c;serves as language for calculation of any domain 待更 Reference PID pythonPID git...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

NFT模式:数字资产确权与链游经济系统构建

NFT模式&#xff1a;数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新&#xff1a;构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议&#xff1a;基于LayerZero协议实现以太坊、Solana等公链资产互通&#xff0c;通过零知…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...