hammer.js - 如何在不传播“点击”事件的情况下注册“保留”事件

hammer.js - how to register a "hold" event without propagating a "click" event?

本文关键字:事件 点击 情况下 保留 注册 传播 js hammer      更新时间:2023-09-26

我想注册一个保留事件,但"跳过"此元素及其父元素上的"单击"事件背后的逻辑......我该怎么做?

测试用例(请随时分叉和编辑):http://codepen.io/muszek/pen/detAK

用例:用户按住 #foo 框以打开包含该元素选项的 #bar 对话框。单击任意位置(但在 #bar 上)将关闭 #bar。目前,按住 #foo 会打开 #bar,但在松开按钮时会立即关闭它。

Hammer.js并不真正处理本机事件。所以在这里你应该听tap事件而不是click .

我认为如果手势是hold,则不会触发点击事件,但如果是这样,只需调用e.gesture.stopDetect();以防止触发多种手势类型。(例如,这通常用于防止release事件在swipe后触发)

您无法阻止触发原生点击。您应该做的是收听"点击"而不是"点击"。锤.js将保持定义为持续超过一定时间的点击。

如果您根本不在侦听"单击",而是想防止触发 href 或按钮,请忘记它。更改div 的按钮和普通文本的 href,设置它们的样式,使它们看起来像以前一样,现在听"点击"它们。

http://codepen.io/anon/pen/dPVXrP

包装在父<div> 内。