zepto中的longTap事件和原生的touchend事件冲突如何避免?

https://img4.mukewang.com/5c32af1600017e9c03350232.jpg

键盘事件,想要控制两种效果。一种是长按事件即longTap事件,长按数字键盘750ms再显示数字,另一种效果是直接点击即touchend事件无延迟显示结果。

阻止事件冒泡行不通,于是想通过触发一个事件时取消另一个事件监听,然后通过异步来重新监听事件处理函数,这样每次点击之间就互不影响。但是这样行不通。重新监听事件处理函数并没有起到效果。

https://img2.mukewang.com/5c32af2c00011d2905170510.jpg

而且有个很奇怪的点是:

        $('#keyBox').on('touchend' , 'a' , function(e) { 

            e.preventDefault();

            e.stopPropagation();        

            keyboardEvent(e);

        });


        $('#keyBox').on('longTap' , 'a' , function(e) {

            keyboardEvent(e);  

            return false;

        }); 

直接这样写会同时执行两个事件,直接点击松开会先触发touchend,然后大概有750ms延迟就触发第二个事件。这都不是长按啊,为什么会执行longTap?长按的话就先触发longTap然后再触发touchend。

谁有比较好的解决方案?


梦里花落0921
浏览 440回答 1
1回答

ibeautiful

要用就用封装好的啊,一般这种手势库都是设置几个计时器,如果没到点touchend触发了,那么就生成个tap事件,如果touchend是到点以后再触发的那就触发longtap,你一边用着longtap一边还处理着touchend,肯定会乱的啊。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript