0

jQuery Mobile でリスナーを作成すると、次のようになります。

$('.this-class').on('swipe',tapHandler);

tapHandler は 2 回実行されます。この問題を解決するために、次のような複数の解決策を見てきました。

$('.page-card').off('swipe').on('swipe',tapHandler);

また

ここで見られるようpageinitに動的コンテンツを作成している場合、チャッシングの問題を排除するために、それを の横にラップします。pagebeforeshow

泡立ちさえもここに遊びに来ることも理解しています。

しかし、私は誰かがなぜこれが存在するのか、なぜ jQuery への貢献者がこのルートを取ることに決めたのか、欠点を知っているのかを説明できることを望んでいました。

4

1 に答える 1

2

まず、どのように機能するかについて説明jQuery Mobileします。jQueryが使用される通常の Web ページとは異なり、jQuery Mobileajax を使用してページを にロードしますDOM。1 つまたは複数のページをロードできます。このため、従来のドキュメント対応は役に立たないため、jQM開発者はページ イベントを作成しました。

このストーリーでは、ページ イベントが重要です。ドキュメントの準備完了はページごとに 1 回だけトリガーされますが、ほとんどのページ イベントは、ページが再訪問される時間に応じて複数回トリガーされます。

on関数 (およびbinddelegate、 deprecated liveなどの他のすべての同様の関数)に戻りましょう。繰り返しますが、通常のページで作業する場合、同じページがDOM.

ここに来jQuery Mobileます。pageshow (または同様のページ イベント) 内でバインド メソッドを使用している場合、そのイベントは何度もバインドされます。基本的にon、メソッドはこのように使用されることを意図したものではありません。

防止方法について詳しく知りたい場合は、私の他の回答を見てください。トピックを探してください:複数のイベントバインディング/トリガーを防ぐ

于 2013-05-24T18:57:36.440 に答える