我正在开发这个小网站: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插件),其中一些丢失了:)我已经修复了这个问题,现在这些事件具有他们应该具有的属性。
答案 0 :(得分:9)
我仍然想知道为什么不是我尝试工作的那个?
了解jquery.specialevent.hammer.js
和jquery.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
可以帮到你找到你想要的东西。