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

How to remove an event listener in Hammer.js 2.0 and bind the recognizer to a new function

我对如何在 Hammer.js 2.0

中正确删除事件侦听器感到有点困惑

按照question中的建议,看来我只需要使用

mc.off(eventString, functionEvent);

但是,当我有 2 个函数需要使用相同的识别器调用时,我似乎无法让它工作。我的示例是我需要有人向左移动,然后我需要删除此监听器并监听另一个向左移动。

正如您在我的简化 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;  
}

question I linked to above and its jsfiddle

中所示

如该回答中所述,您可以通过不使用匿名函数来解决问题。

hammertime.on("touch", callback);

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

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