【发布时间】:2013-12-19 14:49:27
【问题描述】:
我有一个完美工作的hammerjs 拖动监听器,它可以像我期望的那样捕获拖动。但是当你放手时,就在 dragend 为triggered 之后,它也会触发click 事件。因此,如果您单击以拖动(移动)目标,并且光标恰好位于链接上,当您松开(放下)时,它会触发对链接的单击,这是我不想要的。
这是我的代码:
$('.draggable').hammer({
drag_min_distance: 0,
drag_max_touches: 2,
drag_lock_to_axis: true,
drag_lock_min_distance: 30
}).on('drag', handleMiddleEvent)
.on('dragstart', handleStartEvent)
.on('dragend', handleEndEvent);
如果我在所有三个处理程序上控制台.log event并且在所有链接上单击控制台.log events,我会在我的控制台中得到类似的内容:
dragstart
dragmiddle
dragmiddle
dragmiddle
dragmiddle
dragend
click
我想避免最后的点击。我尝试在所有的句柄方法中添加event.stopPropagation(),但无济于事。
【问题讨论】:
-
我能够通过添加“is_dragging”全局变量来破解解决方案,在 handleStartEvent 中将其设置为 true,然后在将其设置为 false 的 handleEndEvent 中设置 100 毫秒 setTimeout,然后检查全局变量在我的点击处理程序上。但这太丑了..我真的希望有更好的东西。
-
您找到更好的解决方案了吗?
标签: javascript jquery touch hammer.js