HammerJS事件属性未定义

Rol*_*and 7 javascript jquery hammer.js

我正在开发这个小网站:网站 ; 我正在使用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)); 
};
Run Code Online (Sandbox Code Playgroud)

我称之为:

this.Drag(selector, delay, function(event) {
    console.log(event.type, event.direction);
});
Run Code Online (Sandbox Code Playgroud)

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

编辑:我刚刚更换了jQuery库:jquery.specialevents.hammer.js ; 与旧的jquery.hammer.js ; 现在好像它正在响应所有事件,我得到了我应该拥有的所有属性.我仍然想知道为什么不是我努力工作的那个?

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

JSu*_*uar 9

我仍然想知道为什么不是我努力工作的那个?

了解之间的区别jquery.specialevent.hammer.js,jquery.hammer.js应该有助于理解问题.Damien,创造者jquery.specialevent.hammer.js,解释了原因.

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

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

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

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

我把jquery.specialevent.hammer.js放到我的Github上,你也可以在那里找到一个演示.也许Eight Media接受了我的拉动请求,它将成为Hammer.JS的一部分.


Dar*_*ney 5

event.gesture.direction 应该得到你想要的东西.

  • 仍然,认为它可能会帮助其他人 - 我正在搜索event.direction问题几个小时. (3认同)