7

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

4

2 回答 2

9

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

jquery.specialevent.hammer.js理解和之间的区别jquery.hammer.js应该有助于理解问题。的创建者 Damienjquery.specialevent.hammer.js解释了原因

然而,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 的一部分。

于 2013-01-10T04:25:24.207 回答
5

event.gesture.direction应该给你你正在寻找的东西。

于 2013-03-16T02:51:23.377 回答