移动端点击事件触发两次怎么解决?

设计师庆晨 阅读 37

我在开发移动端H5页面时遇到个问题,用@touchstart@click绑定同一个按钮,结果点击时会触发两次点击事件。试过给元素加touch-action: manipulation和用防抖函数,但滑动时误触的情况还是存在。代码大概是这样写的:

<div @touchstart="handleTouch" @click="handleClick">点击我</div>

控制台打印发现handleClick和handleTouch都会被触发。有什么办法能彻底区分点击和滑动操作吗?或者应该用什么事件组合更合适?

我来解答 赞 6 收藏
二维码
手机扫码查看
1 条解答
极客东旭
你应该用 @touchstart 阻止默认行为并配合标志位来区分点击和滑动,别同时绑 @click 和 @touchstart。代码可以这么改:

let isMoved = false;

function handleTouchStart() {
isMoved = false;
}

function handleTouchMove() {
isMoved = true;
}

function handleClick() {
if (isMoved) return;
console.log('真正点击了');
}


HTML这边调整一下:
<div @touchstart="handleTouchStart" @touchmove="handleTouchMove" @click="handleClick">点击我</div>

这样滑动就不会误触发点击事件了,简单粗暴有效。
点赞 1
2026-02-14 13:11