2013-01-06 45 views
7

我正在開發此小型網站:Website;我使用HammerJS作爲觸摸支持庫。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; wi th jquery.hammer.js;而且現在看起來它正在響應所有事件,並獲得了我應該擁有的所有屬性。不過,我想知道爲什麼不是我努力工作的那個人?

編輯:我發現我的問題的根本原因,我的代碼依賴於其中一些我加載異步與Yepnope腳本加載程序庫,所以地方沿途而不是加載所有庫(包括jquery插件爲hammer.js),其中一些丟失:)我已經解決了這個問題,現在事件具有他們應該的屬性。

+1

我得到'event.type'的記錄值,但未定義'event.direction' –

+0

這正是我所得到的......這就是爲什麼我在這裏要求:) – Roland

+0

對我來說意味着什麼是你的代碼工作正常,事件對象只是沒有方向屬性。 –

回答

9

不過我想知道爲什麼不是我努力工作的那個人?

瞭解jquery.specialevent.hammer.jsjquery.hammer.js之間的區別應該有助於理解問題。 Damien, the creator of jquery.specialevent.hammer.js, explains why

然而八傳媒集團決定建立在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上,你也可以找到一個演示。也許Eight Media接受我的 拉取請求,它將成爲Hammer.JS的一部分。

+0

〜如問題描述中所述,我發現問題是導致描述的行爲。另外,我已經閱讀了爲什麼'jquery.specialevent.hammer.js'已被引入該項目的原因:)不管怎樣,謝謝你的回答:) – Roland

+0

你讀過我最後一次編輯@JSuar了嗎? – Roland

5

event.gesture.direction應該找到你正在尋找的東西。

+0

這適用於庫的最新更新 – Roland

+3

仍然認爲它可能會幫助其他人 - 我正在尋找event.direction問題幾個小時。 –