将 panright 与 Hammer.js 一起使用时如何仅触发一次方法?

How to fire method only once when using panright with Hammer.js?

我在使用 swiperight 时遇到了让 Hammer.js(使用 jQuery 插件)正常运行的问题。因此,我需要使用 panright.

向右平移时,我的事件会触发很多很多次。

如何将其更新为仅运行一次? (然后当用户在另一张幻灯片上向右或向左滑动时再次)

$('.slide').hammer().on('panright', doSomething);

我认为您应该捕获一个 panend 事件。例如:

var myElement = document.getElementById('myID');
var mc = new Hammer.Manager(myElement);
mc.add(new Hammer.Pan({direction:Hammer.DIRECTION_HORIZONTAL, threshold:80, pointers: 0}));
mc.on("panend", function(ev) {
  if(ev.direction == Hammer.DIRECTION_RIGHT) 
  {
    //do what you want here
  }
});

还有其他事件称为 'swipeleft' 和 'swiperight'。这将响应 1 个滑动事件而不是平移的多个触发事件。

var mc = new Hammer($('.screen'));
mc.on("swipeleft", moveHandler);
mc.on("swiperight", moveHandler);

function moveHandler(event){
    // do something
}

Documentation

您可以通过 isFinal 属性:

过滤事件

var mc = new Hammer($('.screen'));
mc.on("swipeleft", moveHandler);
mc.on("swiperight", moveHandler);

function moveHandler(event){
  if(event.isFinal){
  // do something on the last animation frame
  }
}