如果一个元件上既有单击交互,又有长按交互的时候,就会发生冲突,长按时2个交互都会触发
如下面左图:

我们希望的正常效果是右图那样的,感谢小楼老师供应理解决的思路,为了让大家也理解思路,我给大家详细讲一下!

要想办理这个问题,就要先明白什么是单击,什么是长按。

html鼠标长按事件Axrue技能单击和长按交互冲突解决办法 jQuery

单击:按下鼠标再松开鼠标,鼠标松开后触发交互内容。
长按:按下鼠标达到一定时长后,触发交互内容。
按时段分,全体流程可以分为2段:短按时段与长按时段。
按操作分,全体流程有2个操作:按下鼠标,松开鼠标。

开始之后,会同时实行鼠标单击时、鼠标松开时、鼠标长按时3个交互。

鼠标单击事宜触发:全局变量的初始值为0,按下鼠标后,如果还没进入长按,就不会改变变量,那么此时变量依旧是0,松开鼠标后判断变量是≠1的,以是触发鼠标单击事宜。
鼠标长按事宜触发:按下鼠并且进入长按时段后,设置变量为1,并且会触发鼠标长按事宜。
松开鼠标后会去触发鼠标单击事宜,可这个事宜的条件是变量≠1,以是无法触发。

末了,为了不影响下一次点击时的交互,要在鼠标松开时将变量重置为0。

作者:Synmo梦儿,"大众年夜众号:梦话Axure

本文由 @Synmo梦儿 原创发布于大家都是产品经理。
未经容许,禁止转载。

题图来自 unsplash,基于 CC0 协议