【问题标题】:HammerJS event properties are undefinedHammerJS 事件属性未定义
【发布时间】:2013-01-06 21:19:40
【问题描述】:

我正在开发这个小网站:Website;我正在使用 HammerJS 作为触摸支持库。

它似乎正在响应事件,并且它识别 event.type 属性,但是当我尝试将 event.direction 或其他相关属性获取到 drag 事件时,控制台中没有任何输出(我正在控制台中记录结果)。

这就是我监听drag事件的方式“

Application.ApplicationController.prototype.Drag = function(selector, delay, callback) {
    return $(selector).on('drag', _.debounce(function(event){
        event.preventDefault();
        return (typeof callback === 'function' && callback !== undefined) ? callback.apply( event, [ event ] ) : 'Argument : Invalid [ Function Required ]';
    }, delay)); 
};

我这样称呼它:

this.Drag(selector, delay, function(event) {
    console.log(event.type, event.direction);
});

谁能告诉我我在那里做错了什么或者我错过了什么?

编辑:我刚刚替换了 jQuery 库:jquery.specialevents.hammer.js;与旧的 jquery.hammer.js ;现在似乎它正在响应所有事件并且我得到了我应该得到的所有属性。我仍然想知道为什么我尝试使用的那个不工作?

编辑:我找到了问题的根本原因,我的代码依赖于一些库,我正在使用 Yepnope 脚本加载器异步加载这些库,所以在某个地方而不是加载所有库(包括hammer.js 的jquery 插件),其中一些丢失了:) 我已经解决了这个问题,现在事件具有它们应该具有的属性。

【问题讨论】:

  • 我得到了 event.type 的记录值,但 event.direction 未定义
  • 这正是我得到的......这就是我在这里问的原因:)
  • 对我来说这意味着您的代码工作正常,事件对象只是没有方向属性。
  • 在使用.on 之前,您是否尝试过将.hammer() 添加到您的方法链中?如$(selector).hammer().on(...
  • 我正在使用 jQuery 插件,这就是我使用 .on() 的原因,但是是的,我也尝试了 vanilla js 的方式来...

标签: javascript jquery hammer.js


【解决方案1】:

我仍然想知道为什么我尝试使用的那个不工作?

了解jquery.specialevent.hammer.jsjquery.hammer.js 之间的区别应该有助于理解问题。 Damien, the creator of jquery.specialevent.hammer.js, explains why.

然而,Eight Media 决定在 jQuery 中创建自己的命名空间以 激活事件。

$("#element").hammer({ /* options */ }).on("tap", function(ev) { 
    console.log(ev); 
}); 

所以最后他们没有使用默认值 jQuery事件系统。这意味着我现有的源代码使用 jQuery 移动事件必须更改。这就是为什么我决定 使用 jQuery 特殊事件 API 实现 Hammer.JS 的使用。

$("#element").on("tap", { /* options */ }, function(ev) {
    console.log(ev); 
}); 

我把 jquery.specialevent.hammer.js 放到我的 Github 那里你也可以找到一个演示。也许八媒体接受我的 拉取请求,它将成为 Hammer.JS 的一部分。

【讨论】:

  • ~ 如问题描述中所述,我找到了导致所述行为的问题。另外,我已经阅读了将jquery.specialevent.hammer.js 引入项目的原因:) 无论如何,谢谢你的回答:)
【解决方案2】:

event.gesture.direction 应该会为您提供所需的内容。

【讨论】:

  • 不过,我认为它可能对其他人有所帮助 - 我搜索了几个小时的 event.direction 问题。
猜你喜欢
  • 2012-12-03
  • 2018-12-06
  • 2021-08-17
  • 2020-11-18
  • 2016-01-25
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多