如何使hammerjs事件只发射一次?

时间:2014-01-23 20:33:51

标签: javascript jquery events hammer.js

我正在使用最新版本的hammerjs(1.0.6)。他们拥有的jquery构建与requirejs有点混乱,所以我只是使用标准构建。

小提琴: http://jsfiddle.net/mcfarljw/fDYx3/

我怎样才能让这个点击事件触发一次然后自行移除?我以为它会像召唤一样简单,但事实并非如此。任何帮助将不胜感激!

var tapCount = 0;
Hammer($('#box')[0]).on('tap', function() {
    tapCount++
    $('#counter').text(tapCount);
    Hammer($('#box')[0]).off('tap');
});

2 个答案:

答案 0 :(得分:0)

你可以试试这个:

var tapCount = 0;
var callback = function() {
tapCount++
$('#counter').text(tapCount);
Hammer($('#box')[0]).off('tap',callback);
};
Hammer($('#box')[0]).on('tap', callback );

工作小提琴:http://jsfiddle.net/robertrozas/EuSK4/

答案 1 :(得分:0)

要仅触发一次事件,您需要将引用存储到绑定事件的管理器实例中。使用相同的实例解除绑定。

https://github.com/rails/sprockets/blob/master/UPGRADING.md#publicassetsmanifest-abc123json-location

var hInstance ;
var handler = function() {
    alert('Alert Once');
    hInstance.off('tap', handler);
};
hInstance = Hammer($('#box')[0]);
hInstance.on('tap', handler );