コールバック関数でいくつかのタッチコントロールを有効にしようとしていますが、コールバック関数で$(this)と同様にイベントにアクセスできません。次のように今のコードでは、なります
$('.img-responsive').each(touchControls);
function touchControls(event) {
event.preventDefault();
var mc = new Hammer(this);
mc.on("doubletap", function() {
console.log($(this));
});
}
はどこ.imgの応答は私のページ上の画像のクラスです。
event.preventDefaultを呼び出そうとすると、event.preventDefaultが関数ではないというエラーが発生します。イベントが自動的に変数に渡されたと思いますか? .onで名前付きコールバック関数を実行したとき、event.preventDefault()が正常に機能したことがわかりました。私がそれをするときにそれが異なっていると思います。どのように正しくアクセスするのですか?
ここで、event.preventDefault()行を削除すると、$(this)を記録すると関数が取得されます。私は個々の要素を得ることを期待していたので、私はそれらのタッチコントロールを設定することができましたが、それは明らかに機能しませんでした。私は「この」でバインドしようとした:
$('.img-responsive').each(touchControls).bind(this);
しかし、私は$(this)をログに記録するとき、それはまだ機能していない、私は期待していた要素でした。
私は基本的には、$(this)と定義されたコールバック関数内のイベントにアクセスする方法について混乱しています。
この場合、ダブルタップイベントのデフォルトの振る舞いがズームインされないようにするにはどうすればよいですか?私がここでそれを防ぐべきでないならば、それを防ぐためにどこにアクセスすればいいですか? –
@MichaelYousef管理しているイベントに対処するための私の応答を更新しました。 – nbrooks
私はダブルタップの関数を指すように、Hammerがコンテキストを変更すると思いますか?いずれにせよ、あなたのソリューションはとても感謝してくれました。 –