HammerJS事件属性未定义

时间:2013-01-06 21:19:41

标签: javascript jquery hammer.js

我正在开发这个小网站: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插件),其中一些丢失了:)我已经修复了这个问题,现在这些事件具有他们应该具有的属性。

2 个答案:

答案 0 :(得分:9)

  

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

了解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的一部分。

答案 1 :(得分:5)

event.gesture.direction可以帮到你找到你想要的东西。