当前位置:首页 > VUE

vue实现长按删除

2026-01-16 17:23:28VUE

Vue 实现长按删除功能

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

vue实现长按删除

监听触摸或鼠标事件

<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>

优化用户体验

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

vue实现长按删除

<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>

移动端兼容性

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

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-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的d…

vue懒加载实现难吗

vue懒加载实现难吗

vue懒加载的实现难度 Vue懒加载的实现并不复杂,核心逻辑是通过动态导入(Dynamic Imports)和路由配置或组件异步加载完成。以下是具体实现方法: 路由懒加载实现 在Vue Router…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…

简单实现vue

简单实现vue

Vue 的基本实现 创建一个简单的 Vue 应用需要引入 Vue 库,并编写基本的模板和数据绑定逻辑。 <!DOCTYPE html> <html lang="en"> &l…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…