与Hammer.js一起使用panright时,如何只开一次方法?

时间:2015-01-07 03:53:01

标签: javascript jquery ios javascript-events hammer.js

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

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

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

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

3 个答案:

答案 0 :(得分:6)

我认为你应该捕获一个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
  }
});

答案 1 :(得分:1)

还有其他一些名为' swipeleft'和' swiperight'。这将响应1次滑动事件,而不是pan的多次触发事件。

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

function moveHandler(event){
    // do something
}

Documentation

答案 2 :(得分:1)

您可以通过 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
  }
}