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

2023-11-30

我创建了一个锤子实例,如下所示:

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

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

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

但是我无法删除此侦听器,因为以下命令什么也不做:

hammertime.off("touch");

我究竟做错了什么?如何摆脱锤子监听器? Hammer.js 文档目前还很差,所以除了以下事实之外,它没有解释任何内容:.on() and .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);

因此,浏览器不知道您是否试图解除绑定,您可以不使用匿名函数来修复此问题,就像我在以下内容中所做的那样:

Fiddle

欲了解更多信息:Javascript 删除事件监听器不工作

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hammer.js 无法删除事件监听器 的相关文章

随机推荐

  • PyTables 的优点是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我最近开始学习PyTabl
  • 在 R 中自定义传单地图图标

    我开始学习如何使用传单地图中的搜索功能 下面是传单地图 它允许您搜索城市 即单个搜索词 library leaflet library leaflet extras library dplyr using the same reproduc
  • 如何使 Flex 仅在有用时消耗鼠标滚动和键盘事件,否则将其传递给浏览器?

    This one s been irking me for a while When I m using the mouse scroll wheel to scroll up and down in a webpage and a fla
  • 替换工作表名称中的多个无效字符[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我正在写一个相当大的宏 最后使用用户之前输入的名称保存工作簿 我为此使用了工作表的标题 因此我需要删除任何会引发文件系统错误的保留字符 lt gt 我想避免使用大量Replace 语句 那
  • 动态分配文件名到Excel连接字符串

    这是我第一次在 SQL Server 2012 中使用 SSIS 我可以成功读取 excel 文件并将其内容加载到 SQL Server 2012 中的表中 任务是一个简单的直接读取 excel 文件 然后复制到 sql server 无需
  • 当屏幕方向改变时,可以转换先前视图控制器上的视图吗?

    我有一种情况viewControllerA pushes viewControllerB到导航堆栈上 当用户旋转屏幕和方向时viewControllerB改变 我想要一个subviewA of viewControllerA来转变和重新定位
  • 为什么这会产生 StackOverflow 错误?

    我最近开始使用 Haskell 并定义了这个看似简单的函数 f 0 1 f x x f x 1 然而 它的结果是这样的 GHCi version 8 2 1 http www haskell org ghc for help Prelude
  • 用于 MATLAB 的 Java JPA 类

    我在 Windows XP Pro SP3 上使用 MATLAB R2007b Java 1 6 SE Eclipse Helios 和 MySql 5 我正在尝试创建一个使用 JPA 注释访问 MySql 5 数据库的类库 这个想法是 M
  • 使用 PubSubclient 在 esp8266 和 arduino 之间进行 mqtt

    我正在使用 WiFiEsp 库将 ESP8266 与 arduino 结合使用 我想与 arduino 建立 MQTT 连接 所以我使用 PubSubclient 库 我收到错误 正在尝试 MQTT 连接 失败 rc 2 5 秒后重试 我的
  • 批量分割文本文件

    我有这个批处理文件来分割txt文件 echo off for f tokens 1 delims a in findstr n PASSWORD txt do for f delims c in b do gt text a txt ech
  • 使用异步方法等待 Task.Run 不会在正确的线程上引发异常

    当运行下面的测试方法时 我发现即使我等待一个抛出异常的任务 测试也会通过 此外 还会弹出一个单独的窗口 提示 QTAgent exe 已停止工作 这表明异常不会传播到运行测试的线程 而是杀死一个单独的线程 我想知道为什么会发生这种情况 另外
  • 在 Struts 2 中从 Java 获取 JSON 对象

    我正在尝试使用 Java 服务器获取响应文本getJSON jQuery 方法 虽然 当Java类是简单格式时我可以获得响应数据 String List and Map 使用其他Java对象时无法获取成功数据 以下是使用简单类型的 Java
  • PHP:file_get_contents 无法打开流:连接被拒绝

    我正在尝试访问第二台服务器file get contents和 simple load xml 我得到 无法打开流 连接被拒绝 结果会怎样呢 allow url fopen Yes allow url include Off 是我的 php
  • 在 Swift 中转换为不同的 C 结构不安全指针

    我想调用 Posix 套接字函数socket and bind来自斯威夫特 socket很容易 需要Int32s but bind造成了问题 因为我有一个sockaddr in指针 但它需要一个sockaddr指针 在 C 语言中 这将是一
  • 了解 NodeJS WebSocket 服务器的对象创建和垃圾收集

    我正在使用wsNodejs 中用于 Web 套接字服务器的模块 代码的简化版本是这样的 var WebSocketServer require ws Server var wss new WebSocketServer port 9001
  • 如何将字符串日期转换为长毫秒

    我在字符串中有一个日期 例如 12 December 2012 如何将其转换为毫秒 长 Using 简单日期格式 String string date 12 December 2012 SimpleDateFormat f new Simp
  • 为数据表中的计算列定义 DateDiff

    我有 日期时间已过期 列 我想创建另一个名为 已过期 的列 该列将根据过期日期显示 是 或 否 如果日期已过 则显示 是 我写了这个 DataColumn colExpirationDate new DataColumn DateTimeE
  • 重新计算动态布局属性

    这是一个可调整大小的窗口 设置动态布局属性 以便顶部组框调整宽度大小 下部组 框和树以及 3 个按钮在两个维度上调整大小 对于高级复选框 我添加了代码来隐藏额外的控件并调整关联框的高度 所以它看起来像这样 用于切换控制值的代码是 void
  • 删除或更新模拟器上的 Google Play 服务

    我编写了一个使用谷歌地图 API v2 的 Android 应用程序 我想在模拟器上测试它 但为了显示地图它有一点问题 我用谷歌搜索并找到了文章 我必须将其安装到软件包 vending apk android gms apk 中 我下载了软
  • Hammer.js 无法删除事件监听器

    我创建了一个锤子实例 如下所示 var el document getElementById el var hammertime Hammer el 然后我可以添加一个监听器 hammertime on touch function e c