对于同一控件同时设置bindtap和bindlongtap,会发现长按时先出现bindlongtap的事件,然后触发点击事件。
通过测试,我们发现,小程序中事件执行的顺序是
点击:touchstart → touchend → tap
长按 touchstart → longtap → touchend → tap
处理方法:
// wxml <view bindtouchstart="bindTouchStart" bindtouchend="bindTouchEnd" bindlongtap="bingLongTap" bindtap="bindTap">蹂躏我</view>
// js bindTouchStart: function(e) { this.startTime = e.timeStamp; } bindTouchEnd: function(e) { this.endTime = e.timeStamp; } bindTap: function(e) { if(this.endTime - this.startTime < 350) { console.log("点击") } } bingLongTap: function(e) { console.log("长按"); }
这样通过时间来判断,可以一定程度上解决这个问题。
参考了文章《小程序踩坑记——长按与点击事件冲突》
本文深入探讨了微信小程序中bindtap和bindlongtap事件的执行顺序冲突问题,通过具体实例展示了如何利用时间戳来区分点击与长按事件,有效避免两者之间的误触发。

8226

被折叠的 条评论
为什么被折叠?



