使用 hammer.js 默认的 doubletap :
Document
当我双击时,它会打印两次 'tap' 和一次 'doubletap', 这是符合预期的。但是我希望它触发 doubletap 事件时不触发 tap 事件,按着官网的说法 http://hammerjs.github.io/require-failure/
我把它改成了
Document
但是没有任何效果!双击时它居然什么都不打印了,也没有什么报错信息。找了一天了也没有找到原因,而我上面的代码是完全按照官网上那段代码来的。
我这么改了下,是可以用的:
document.addEventListener("DOMContentLoaded", function () {
var myElement = document.querySelector('.box')
var hammer = new Hammer.Manager(myElement);
hammer.add( new Hammer.Tap({ event: 'doubletap', taps: 2 }) );
hammer.add( new Hammer.Tap({ event: 'singletap' }) );
hammer.get('doubletap').recognizeWith('singletap');
hammer.get('singletap').requireFailure('doubletap');
hammer.on('doubletap', function(ev) {
console.log(ev.type);
}).on('singletap', function(ev) {
console.log(ev.type);
});
});
补充:
文档关于Hammer
构造器的描述:
既然我们需要的是自定义的
doubletap
和singletap
,那显然在最一开始只接使用new Hammer(myElement)
就不合适了。这个应该是你那段代码问题的关键