0

私はjQueryMobileとPhoneGapアプリを開発しています。私はこのコードを使用しています:

$('#contact').live('pageinit', function() {
    //$.mobile.loading('show');
    theme();
    getData('contact/list',contactList);
    //$.mobile.loading('hide');
});

初めてページにアクセスするときは、うまく機能します。2回目の試行では、イベントが複数回発生しています。使ってみましたがうまくいきbindません。

イベントと関係があると思いますlive。ページを初期化するたびにバインドされるため、ページが複数になります。そのようにリンクすると問題が解決window.location.hrefします。-DOMを再作成します。残念ながら使えません。

別の方法で処理する方法はありますpageinitか?

私は以前にそれを見つけようとしましたが、成功しませんでした。また見た:click()が複数回発火する

4

4 に答える 4

0

私は通常、on()代わりにこのメソッドを使用しますlive()(現在は非推奨です)。各ページコンテナにを与えるidので、インデックスページではindex、次のようにイベントにバインドできます。

$(document).on("pageinit", "#index", function() {
    //do stuff here
});

ページショーでも同じように機能します。

于 2012-09-20T12:38:22.997 に答える
0

jquery mobile でイベントをバインドするときは、イベントが複数回バインドされないように十分に注意する必要があります。jquery モバイルで新しいページに移動しても、従来のナビゲーションのようにバインドされたイベントが「リセット」されることはありません。あなたが直面している問題は、おそらくページにアクセスするたびに関数がイベントにバインドされているためです。つまり、ページにアクセスすればするほど、その関数が実行される回数が増えます。イベントが一度だけバインドされるようにするために、最初のページのヘッダーにバインドすることをお勧めします。このようにして、イベントは一度だけバインドされ、このページが開始されるたびに関数が実行されます。

于 2012-09-20T13:50:23.550 に答える
0

理論的には、「ライブ」でバインドできるイベントはすべて直接バインドできます。直接バインドする利点は、以前にバインドされたハンドラーを (iirc) 上書きすることです。そのため、ハンドラーは 1 つしかないため、後続の読み込みで複数回トリガーされることはありません。

次のようなものを試してください:

$("#contact").pageInit(function() {
  theme();
  getData('contact/list', contactList);
});
于 2012-09-20T12:41:59.373 に答える