私のページでは、要素を右にスワイプすると、要素が移動します。これらのスワイプを処理するための次のコードがあります。
window.addEventListener("touchstart", touchStart, false);
window.addEventListener("touchmove", touchMove, false);
問題は、スワイプ可能にしたい要素に影響を与えるだけではないということです。代わりに、ページの任意の場所をスワイプすると、が実行されますtouchMove
。これを修正するために、私は試しました:
var content = document.getElementById("content");
content.addEventListener("touchstart", touchStart, false);
content.addEventListener("touchmove", touchMove, false);
この種の機能は機能しましたが、divが(ユーザーの操作を介して)表示された場合#content
でも、イベントは発生します。
#content
私が検討した別の解決策は、これらのイベントを、スワイプを有効にする必要がある要素にバインドすることでした。問題は、これらの要素が動的にページに追加されるため、ページの読み込み時に上記の関数が呼び出されたときに、要素が考慮されないことです。次に、次のようにjQueryの.on()
メソッドを使用することを検討しました。
$("#content .row").on("touchmove", touchMove, false);
しかし、それはまったく呼びかけていませんtouchMove
。
これをすべて行うためのより良い方法はありますか?イベントリスナーがのみに割り当てられている場合のtouchMove
子ではない要素で呼び出されることは理にかなっていますか?#content
#content