当前位置:首页 > VUE

vue实现长按删除

2026-01-16 17:23:28VUE

Vue 实现长按删除功能

在 Vue 中实现长按删除功能,可以通过监听 touchstarttouchend 事件或 mousedownmouseup 事件来实现。以下是具体实现方法:

监听触摸或鼠标事件

<template>
  <div 
    @mousedown="startPress"
    @mouseup="endPress"
    @touchstart="startPress"
    @touchend="endPress"
  >
    长按我删除
  </div>
</template>

<script>
export default {
  data() {
    return {
      pressTimer: null,
      pressDuration: 2000 // 长按时间阈值(毫秒)
    }
  },
  methods: {
    startPress(e) {
      // 阻止默认行为,避免触发点击事件
      e.preventDefault()
      // 设置定时器
      this.pressTimer = setTimeout(() => {
        this.deleteItem()
      }, this.pressDuration)
    },
    endPress() {
      // 清除定时器
      clearTimeout(this.pressTimer)
    },
    deleteItem() {
      // 执行删除操作
      console.log('删除操作')
    }
  }
}
</script>

优化用户体验

为避免误触,可以添加视觉反馈,例如在长按时改变元素样式:

<template>
  <div 
    @mousedown="startPress"
    @mouseup="endPress"
    @touchstart="startPress"
    @touchend="endPress"
    :class="{ 'pressing': isPressing }"
  >
    长按我删除
  </div>
</template>

<script>
export default {
  data() {
    return {
      isPressing: false,
      pressTimer: null,
      pressDuration: 2000
    }
  },
  methods: {
    startPress(e) {
      e.preventDefault()
      this.isPressing = true
      this.pressTimer = setTimeout(() => {
        this.deleteItem()
        this.isPressing = false
      }, this.pressDuration)
    },
    endPress() {
      this.isPressing = false
      clearTimeout(this.pressTimer)
    },
    deleteItem() {
      console.log('删除操作')
    }
  }
}
</script>

<style>
.pressing {
  background-color: #f0f0f0;
}
</style>

移动端兼容性

对于移动端,确保正确处理触摸事件:

vue实现长按删除

methods: {
  startPress(e) {
    if (e.type === 'touchstart') {
      // 阻止触摸滚动
      e.preventDefault()
    }
    this.isPressing = true
    this.pressTimer = setTimeout(() => {
      this.deleteItem()
      this.isPressing = false
    }, this.pressDuration)
  }
}

注意事项

  • 长按时间阈值(pressDuration)可根据需求调整。
  • 在移动端,touchstarttouchend 事件更可靠。
  • 清除定时器是必要的,避免内存泄漏。

标签: vue
分享给朋友:

相关文章

vue实现键盘

vue实现键盘

Vue 实现键盘功能 在Vue中实现键盘功能通常涉及监听键盘事件、处理输入以及渲染虚拟键盘界面。以下是几种常见的实现方式: 监听键盘事件 通过@keydown或@keyup指令监听键盘事件,适用于需…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现 toast

vue实现 toast

Vue 实现 Toast 组件 在 Vue 中实现 Toast 组件可以通过多种方式完成,以下是几种常见的方法: 使用全局组件和事件总线 创建一个全局的 Toast 组件,并通过事件总线或 Vue…

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signatu…

vue diff实现

vue diff实现

Vue Diff 算法实现原理 Vue 的虚拟 DOM Diff 算法(即 patch 过程)是其高效渲染的核心,主要通过对比新旧虚拟节点的差异,最小化 DOM 操作。以下是关键实现要点: 同层级比…