ホームページ > ウェブフロントエンド > jsチュートリアル > jQuery Mobile: `$(document).ready()` と `$(document).on('pageinit')` – どちらを使用する必要がありますか?

jQuery Mobile: `$(document).ready()` と `$(document).on('pageinit')` – どちらを使用する必要がありますか?

Mary-Kate Olsen
リリース: 2024-12-31 05:03:16
オリジナル
125 人が閲覧しました

jQuery Mobile:  `$(document).ready()` vs. `$(document).on('pageinit')` – Which Should I Use?

jQuery Mobile 1.4 アップデート

元の記事は、jQuery Mobile 1.4 より前に使用されていた古いページ処理方法を対象としていました。この古い方法は現在非推奨となっており、jQuery Mobile 1.5 (これを含む) までアクティブのままになります。つまり、少なくとも来年と jQuery Mobile 1.6 までは、以下で説明するすべてを引き続き使用できます。

pageinit を含む古いイベント は存在しなくなり、pagecontainer ウィジェットに置き換えられました。 Pageinit は完全に消去され、代わりに pagecreate を使用できますが、これは変更されません。

ページ イベントを処理する新しい方法に興味がある場合は、この記事。それ以外の場合は、この記事を読み続けてください。この記事ではページ イベント以外の内容も取り上げており、貴重な情報が提供される可能性があります。

古いコンテンツ

この記事は、私のブログの一部としてもご覧いただけます

ここ.

$(document).on('pageinit') vs $(document).ready()

初めて jQuery を学習するときは、$(document).ready() 関数内のコードを呼び出して、関数が実行されるとすぐにすべてが実行されるようにすることを教えられます。 DOMがロードされています。ただし、jQuery Mobile では、ナビゲーション中に各ページのコンテンツを DOM にロードするために Ajax が使用されます。つまり、最初のページがロードされる前に $(document).ready() がトリガーされます。その結果、ページ操作を目的としたコードはすべてページの更新後に実行されるため、微妙なバグが発生する可能性があります。一部のシステムでは、正常に動作しているように見えますが、他のシステムでは、不安定で再現が困難な動作が発生する可能性があります。

従来の jQuery 構文:

$(document).ready(function() {

});
ログイン後にコピー
ログイン後にコピー
この問題を解決するには(これは確かに問題です)、jQuery Mobile 開発者は

ページ イベント を作成しました。一言で言えば、ページ イベントは、ページ実行の特定の時点でトリガーされるイベントです。このようなページ イベントの 1 つが pageinit です。これは次のように使用できます。

$(document).on('pageinit', function() {

});
ログイン後にコピー
ドキュメント セレクターの代わりにページ ID を使用すると、さらに進めることができます。

index:

<div data-role="page">
ログイン後にコピー
という ID を持つ jQuery Mobile ページがあるとします。インデックス ページでのみ使用できるコードを実行するには、次の構文を使用できます:

$('#index').on('pageinit', function() {

});
ログイン後にコピー

pageinit イベントは、ページがロードされて表示される直前に実行されます。初めて。ページが手動で更新されるか、Ajax ページの読み込みがオフにされない限り、再度トリガーされることはありません。ページにアクセスするたびにコードを実行したい場合は、pagebeforeshow イベントを使用することをお勧めします。

この問題を示す実際の例を次に示します: http://jsfiddle。 net/ガジョトレス/Q3Usv/

この質問についてもう少しメモしておきます。複数のページで 1 つの HTML を使用しているか、複数の HTML ファイル パラダイムを使用しているかに関係なく、カスタム JavaScript ページの処理をすべて 1 つの別個の JavaScript ファイルに分離することをお勧めします。これによってコードが改善されるわけではありませんが、特に jQuery Mobile アプリケーションの作成時にコードの概要が大幅に向上します。

mobileinit と呼ばれる別の特別な jQuery Mobile イベントもあります。 jQuery Mobile が起動すると、ドキュメント オブジェクトで mobileinit イベントがトリガーされます。デフォルト設定をオーバーライドするには、それらを mobileinit にバインドします。 mobileinit の使用例の 1 つは、Ajax ページの読み込みをオフにしたり、デフォルトの Ajax ローダーの動作を変更したりすることです。

$(document).ready(function() {

});
ログイン後にコピー
ログイン後にコピー

ページ イベントの遷移順序

すべてのページ イベントのリストここで見つけることができます: http://api.jquerymobile.com/category/events/

としましょうページ A とページ B があります。これはアンロード/ロードの順序です:

  1. ページ B - イベント pagebeforecreate
  2. ページ B - イベント pagecreate
  3. ページB - イベントpageinit
  4. ページ A - イベント pagebeforehide
  5. ページ A - イベント pageremove
  6. ページ A -イベントpagehide
  7. ページ B - イベント pagebeforeshow
  8. ページ B - イベント pageshow

ページイベントをより深く理解するには、以下をお読みください。これ:

  • ロード前ページページロード

以上がjQuery Mobile: `$(document).ready()` と `$(document).on('pageinit')` – どちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート