我想注册一个保持事件,但是“跳过”这个元素及其父元素的“点击”事件背后的逻辑......我该怎么做?
测试用例(请随意分叉和编辑):http ://codepen.io/muszek/pen/detAK
用例:用户按住#foo 框以打开带有该元素选项的#bar 对话框。单击任意位置(但在#bar 上)关闭#bar。目前,按住#foo 会打开#bar,但在释放按钮时会立即将其关闭。
我想注册一个保持事件,但是“跳过”这个元素及其父元素的“点击”事件背后的逻辑......我该怎么做?
测试用例(请随意分叉和编辑):http ://codepen.io/muszek/pen/detAK
用例:用户按住#foo 框以打开带有该元素选项的#bar 对话框。单击任意位置(但在#bar 上)关闭#bar。目前,按住#foo 会打开#bar,但在释放按钮时会立即将其关闭。
Hammer.js 并没有真正处理原生事件。所以在这里你应该监听tap
事件而不是click
.
如果手势是 a ,我认为不会触发点击事件hold
,但如果确实如此,只需调用e.gesture.stopDetect();
以防止触发多种手势类型。(例如,这通常用于防止release
在 a 之后触发事件swipe
)
您无法阻止触发原生点击。你应该做的是听“点击”而不是“点击”。Hammer.js 将保持定义为持续超过一定时间的点击。
如果您根本不听“点击”,但想防止触发 href 或按钮,请忘记它。更改 div 的按钮和普通文本的 href,设置它们的样式,使它们看起来像以前一样,现在在它们上听“tap”。
http://codepen.io/anon/pen/dPVXrP
包裹在 parent 内<div>
。