7

私はこの小さなウェブサイトを開発しています:ウェブサイト; タッチサポートライブラリとしてHammerJSを使用しています。

イベントに応答しているようで、プロパティを認識しますが、イベントに関連するプロパティまたはその他の関連プロパティをevent.type取得しようとすると、コンソールに何も出力されません(結果をコンソールに記録しています)。event.directiondrag

これが私がイベントを聞く方法です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、問題を理解するのに役立ちます。の作成者であるDamienがjquery.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に配置しました。ここには、デモもあります。たぶん、Eight Mediaは私のプルリクエストを受け入れ、Hammer.JSの一部になります。

于 2013-01-10T04:25:24.207 に答える
5

event.gesture.directionあなたが探しているものを手に入れるはずです。

于 2013-03-16T02:51:23.377 に答える