在hammer.js 2.0中多次滑动事件调用

时间:2015-09-20 10:19:41

标签: javascript hammer.js

我正在实施hammer.js滑动功能来更改我的滑块图像。它有效,但有时会触发多次滑动事件进行单次滑动?

当我向某个时候向左滑动时,它会发生左右滑动事件。 滑动右侧事件也是如此。

我如何解决这个问题。

var mc = new Hammer.Manager(el);
var pan = new Hammer.Pan();
var swipe = new Hammer.Swipe();
mc.add([ pan ]);
mc.add(swipe).recognizeWith(mc.get('pan'));

mc.on("panstart panmove", onPan);
mc.on("swipeleft swiperight", onSwipe);

function onSwipe(ev) {

    if (ev.type == 'swipeleft') 
    {
        var currentPage = $('#' + pageStepInputId).val();
        var totalPage = parseInt($('#' + pageCountLabelId).text());
        if (currentPage == totalPage) 
        {
            return 0;
        }
        transform.translateX = -elParent.offsetWidth * 1.5;
        requestElementUpdate();
        $('.image-loading-indicator').show();
        $(el).one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd",function() 
                {
                    attachmentPreview.next(callComponentId, pageStepInputId, pageCountLabelId);
                });

        console.log('swipeleft', count++);
        ev.srcEvent.stopPropagation()


    } else if (ev.type == 'swiperight') {

        if ($('#' + pageStepInputId).val() >= 2) 
        {
            transform.translateX = elParent.offsetWidth * 1.5;
            requestElementUpdate();
            $('.image-loading-indicator').show();
            $(el).one("transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd", function() 
                    {
                        attachmentPreview.previous(callComponentId, pageStepInputId);
                    });
        }

    }
}

1 个答案:

答案 0 :(得分:0)

FWIW,我发现我正在触发多个Hammer事件,因为我无意中为同一事件安装了多个处理程序。值得检查一下您的控制流是否在做同样的事情。