如何在Hammer.js 2.0中删除事件监听器并将识别器绑定到新函数

时间:2015-09-28 00:15:10

标签: javascript javascript-events hammer.js

我对如何在Hammer.js 2.0中正确删除事件监听器感到困惑。

按照question中的建议,我似乎只需要使用

mc.off(eventString, functionEvent);

然而,当我有2个函数需要使用相同的识别器调用时,我似乎无法使用它。我的例子是我需要有人来panleft,然后我需要删除这个监听器并听取另一个panleft。

正如您在简化的codepen example中看到的那样,我尝试在第一个函数中调用mc.off,然后设置下一个事件,但它同时运行。

所以在我的例子中我想要的是第一个panleft触发第一个函数,然后第二个panleft触发一个新函数

var myElement = document.getElementById('myElement');

var mc = new Hammer(myElement);

mc.on("panleft", function(ev) {
  selectFirst('first')
});

function selectFirst (text) {
    myElement.textContent = text;
    mc.off('panleft', selectFirst);

    mc.on("panleft", function(ev) {
      selectSecond('second')
    });
}

function selectSecond (text) {
    myElement.textContent = text;  
}

1 个答案:

答案 0 :(得分:1)

如我在上面链接的question及其jsfiddle

所示

正如答案中提到的,您可以通过不使用匿名函数来解决问题。

hammertime.on("touch", callback);

然而,它似乎没有解决我试图删除初始函数并绑定到具有相同识别器的新函数的问题。

我最后只是添加了一个新元素并将其绑定到第二个函数。我建议你可能只有1 panleft事件,如果它需要做一些不同的事情,只需添加另一个锤子元素panleft就可以了。