gpt4 book ai didi

javascript - Hammer.js 无法删除事件监听器

转载 作者:行者123 更新时间:2023-12-04 00:57:37 25 4
gpt4 key购买 nike

我像这样创建一个锤子实例:

var el = document.getElementById("el");
var hammertime = Hammer(el);

然后我可以添加一个监听器:

hammertime.on("touch", function(e) {
console.log(e.gesture);
}

但是我不能删除这个监听器,因为下面什么都不做:

hammertime.off("touch");

我做错了什么?我如何摆脱锤子监听器? hammer.js 文档目前非常糟糕,因此除了 .on().off() 方法存在这一事实外,它什么也没解释。我不能使用 jQuery 版本,因为这是一个性能关键型应用程序。

JSFiddle 展示这个:http://jsfiddle.net/LSrgh/1/

最佳答案

好的,我想通了。来源很简单,它正在做:

on: function(t, e) {
for (var n = t.split(" "), i = 0; n.length > i; i++)
this.element.addEventListener(n[i], e, !1);
return this
},off: function(t, e) {
for (var n = t.split(" "), i = 0; n.length > i; i++)
this.element.removeEventListener(n[i], e, !1);
return this
}

这里要注意的是(除了糟糕的文档)它是 e 它是 on 事件中的回调函数,所以你正在做:

this.element.addEventListener("touch", function() {
//your function
}, !1);

但是,在删除中,您没有传递回调,所以您可以:

this.element.removeEventListener("touch", undefined, !1);

所以,浏览器并不知道你试图解除绑定(bind)的女巫函数,你可以不使用匿名函数来解决这个问题,就像我在:

Fiddle

更多信息:Javascript removeEventListener not working

关于javascript - Hammer.js 无法删除事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17367198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com