0

複数ページの JQM アプリで、イベントが複数回発生するという問題がありました。例えば:

    $("#Button").on("click", function (event) {

            alert("hello");

    });

これは最初は 1 回発生しますが、他のページに移動したり、[戻る] ボタンを使用したりした後、リンクへのアクセス数が増加するにつれて、アラート ポップアップの数が増加しました。を使用してこれを停止できました

event.stopImmediatePropagation();

しかし、これは私のアプリで別の問題を引き起こしていました。なんてこと?これは非常にイライラします。これが JQM サイトでより適切に文書化されていないのはなぜですか? .. とにかく。解決策を探しているときに、この投稿を見つけました

http://www.ardeeram.com/blog/2012/06/03/jquery-mobile-events-firing-multiple-times/

「pageinit」イベントを、要素が見つかったページ ID に委譲することをお勧めします。すなわち

jQuery(document).on('pageinit', '#page_one', function (event) { 

)};

そのページのコード ブロックごとに複数の pageinit ブロックを使用する代わりに (記事にあるように)、pageinit ページ ID を html の最初のページに設定するという予感がありました。試してみたところ、複数イベントの問題がなくなりました。私は自分のアプリをテストして、他のページ (合計 6 ページあります) に何も壊れていないことを確認し、問題なく動作することを確認しました。私の質問は次のとおりです。このメソッドを pageinit に使用する際に欠点や問題が見られる人はいますか?

4

1 に答える 1

0

これは、jQuery Mobile が一度に複数のページを DOM に保持するために発生します。それを念頭に置いてコーディングする必要があります。ID を持つ要素buttonが 2 つの異なるページに存在する場合、それらの要素の 1 つにイベントが複数回バインドされます (ID は一意でなければならないため)。

委任されたpageinitアプローチは、推奨されるアプローチです。

于 2012-09-06T21:18:07.727 に答える