如何删除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 删除 何删除 事件      更新时间:2023-09-26

我对如何正确删除Hammer.js 2.0中的事件侦听器有点困惑

按照这个问题的建议,我似乎只需要使用

mc.off(eventString, functionEvent);

然而,我似乎不能得到这个工作,当我有2个函数,我需要与相同的识别器调用。我的例子是,我需要有人panleft,然后我需要删除这个监听器并监听另一个panleft。

正如您在我的简化的相互依赖示例中看到的,我尝试在第一个函数中调用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;  
}

正如我上面链接到的问题及其jsfield

所示

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

hammertime.on("touch", callback);

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

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