プレーンなJavascriptメソッドを使用するだけでJQueryセレクターなしでハンマーJSイベントを使用するにはどうすればよいですか?
4 に答える
ハンマーをコンテナ要素にバインドします。
var hammer = new Hammer(document.getElementById("container"));
これで、コンテナ要素で実行されるすべてのジェスチャで、ジェスチャに関する情報を含むコールバックオブジェクトを受け取ります。
関数の例:
hammer.ondragstart = function(ev) { };
hammer.ondrag = function(ev) { };
hammer.ondragend = function(ev) { };
hammer.onswipe = function(ev) { };
hammer.jsは完全にスタンドアロンバージョンとして利用できるため、jqueryリソースをインポートする必要はありません。参照:http ://eightmedia.github.com/hammer.js/
完全なドキュメント:https ://github.com/eightmedia/hammer.js#documentation
GitHubのドキュメントをざっと見てみましょう。
var hammer = new Hammer(document.getElementById("container"));
jQueryなしで「ハンマー」を作成します。その後、コールバック関数を設定できます。そのためのjQueryも必要ありません。しかし、注意してください!HammerJSは内部でjQueryを必要とする可能性があるため、<script src="path/to/jquery.js"></script>
簡単な答えは、単純な古いDOMAPIを使用することです。一度含めると、jQueryだけを使用する義務はなく、強制されることもありません。
var someElements = document.querySelectorAll('.someClass');//not jQuery, perfectly valid
var byId = document.getElementById('someId');
var sameScript = $('#anotherId');//nothing stops me from doing this... using jQ for some things
DOM APIが少し不格好だと思ったら(それはそうです)、次のようなことをしたほうがいいでしょう:
var pureDOMRef = $('someID')[0];//returns "normal" Element object, removes jQ wrapper
var multiple = Array.prototype.slice.apply($('.classSelector'),[0]);//returns Array
ただ遊んで、必要に応じて前後に切り替えてください、それは何も悪いことではありません
新しいバージョンのhammer.jsは、JQueryプラグインを提供します。これは、JQueryのプラグインではなく、FORJQueryであることを最初に理解する必要があります。したがって、他の目的でサイトにJQueryを使用する場合は、基本的に次のようなJQueryセレクターでhammerからプラグインを「適用」できると便利です。
$(element).hammer(options).bind("pan", myPanHandler);
Hammer.jsには最新のOOPパターンがあるため、一度に複数のデータ処理にインスタンスを使用できます。したがって、hammerにバインドされているすべてのJQuery要素はインスタンスです。(IMHO)このプラグインを使用するか、Vanillaを使用してもかまわない場合は、JQueryの速度が数ミリ秒遅くなります。