1

jGesturesをBackbone.jsアプリケーションで動作させようとしていますが、うまくいきません。

ページ本文の下部にスクリプトを含めています。

<script type="text/javascript" src="jquery-1.7.2.js"></script>

<script type="text/javascript" src="jgestures.min.js"></script>

<script type="text/javascript" src="underscore.js"></script>
<script type="text/javascript" src="backbone.js"></script>
<script type="text/javascript" src="backbone.localStorage.js"></script>

<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>

<script type="text/javascript" src="src/app_root.js"></script>
<script type="text/javascript" src="src/app_beverage.js"></script>
<script type="text/javascript" src="src/app_order.js"></script>
<script type="text/javascript" src="src/app_people.js"></script>
<script type="text/javascript" src="src/app_router.js"></script>

ジェスチャ ハンドラをこのようにアタッチします。

events: {
    "tapone .test": "something"
}

コンソールを介して (モバイル デバイスではなくデスクトップ上で) 手動でイベント ハンドラーをトリガーできるため、イベント ハンドラーが正しくアタッチされていることがわかります。

$(".test").trigger("tapone");

しかし、iOS 5 でコードを実行すると、jGestures コードがタッチ イベントを生成していないように見えます。これらのタッチイベントをトリガーするために私がしなければならない人は他にいますか? バックボーン ルーターを使用しているので、DOM の更新後にライブラリを再度初期化する必要があるのでしょうか?

4

1 に答える 1

0

Backbone.View.eventsデリゲートが と のすぐ上jQuery.bindにある場合は、 Backbone.View.delegateEvents のコードjQuery.delegateを見てください。

したがって、イベント バインディング定義が次のように機能する場合:

$(<your View.el DOM element>).delegate(selector, eventName, method);

次に、バックボーンで動作するはずです。

たとえば、あなたの場合、試すことができます:

$(<your View.el DOM element>).delegate( ".test", "tapone", function(){ console.log( "hi! tapone" ); } );

イベント バインディングを jQuery で直接定義してみて、この方法でイベントが期待どおりにトリガーされるかどうかを確認してください。そうでない場合、問題はバックボーンの外にあります。そうでない場合、問題は実装にあるはずです。どちらの場合も問題はバックボーン自体にあると思います。

于 2012-08-04T10:24:13.770 に答える