使用jQuery Hammer.js 2和事件委托实现长按(按住)功能

3
我最近升级到了hammer.js 2,其中我注意到的第一件事是“hold”已被替换为“press”。我的旧代码通过事件委托可以正常工作,但只使用press似乎只能在特定元素上工作。注意:我通过jquery插件使用hammer.js。
Hammer.js 1
$(element).hammer().on("hold",callback);

运行正常

$(rootElement).hammer().on("hold",".elementSelector",callback);

运行良好

Hammer.js 2

这个

$(element).hammer().on("press",callback);

功能正常,而这个

$(rootElement).hammer().on("press",".elementSelector",callback);

不会触发回调函数。


你解决了这个问题吗?我也遇到了同样的问题。 - Haseeb
不完全是这样,但我目前正在使用一种解决方法,在根元素上放置侦听器,没有委派选择器,并使用自己的函数来确定触发事件的内部元素是否是所需元素之一(或其子元素之一)。我在此答案中提供了代码。 - Jools
1个回答

5

新版本的 Hammer 事件已经简化以提高速度。要重新启用事件委托,只需将 domEvents:true 添加为选项:

$(rootElement).hammer({domEvents:true}).on("press",".elementSelector",callback);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接