画面遷移イベント

画面遷移イベント

script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

pagebeforechange

画面遷移が呼び出される前に呼び出されるイベント

$(document).on("pagebeforechange",function(e, data){
   //イベント処理
});

dataは、
options
toPage属性をもつ

optionsは、画面遷移のオプション
toPageには、遷移先の画面のURL、もしくはDOMが入る

pagebeforeload

HTMLの読み込みがはじまる前に呼び出されるイベント
このイベント発生後、次の遷移する画面のDOMがAjaxにより読み込まれる

読み込まれるDOMは

<div data-role="page">

</div>

で指定された要素の中になる

jQueryMobileの場合、この中がページとして扱うため、ふつうのHTMLとは異なることに注意する

使い方は

$(document).on("pagebeforeload","#main",function(e, data){
     //イベント処理
});

dataにふくまれる情報はかなり多く
絶対URL
ホスト内のURL
遷移元画面のDOM
遷移先画面のDOM
などがふくまれる

script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

pagebeforecreate

DOMのロード完了時に呼ばれるイベント
この状態のDOMは
jQueryMobileで画面部分が初期化される前なので
pagebeforecreateで追加されたDOMは
jQueryMobileのスタイルが適用される
このため、
jQueryMobileのスタイルを適用する静的なDOM追加に使うことになる

<div data-role="page" id="main">
<div data-role="content">
<div id="box"></div>
</div>
</div>

$(document).on("pagebeforecreate","#main",function(e,data){
$(#box).append("<button>ボタン追加</button>");
});

とすれば、

<div id="box"></div>

へボタンが追加される

pagecreate

pagebeforecreateイベントとほぼ同じ
違いは、beforeじゃないから
body要素へスタイルが適用された後になること
通常は
pagebeforecreateを使う

使い方は

$(document).on("pagecreate","#main",function(e){
   //イベント処理
});
script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

pageinit

jQueryMobileでスタイルが適用された後に呼び出される
このタイミングでDOMはjQueryMobileにより変換される

注意点として、pageinitイベント以降に
DOMに要素を追加しても
jQueryMobileのスタイルが適用されないということ

つまり、pageinitイベントの中で要素を追加しても
jQueryMobileのボタンではなく
HTMLだけで作成したボタンになってしまう

$(document).on("pageinit","#main",function(e){
$("#box").append("<button>追加ボタン</button>");
});

これだと、ただのHTMLのボタンになる

このため、jQuerymobileのスタイルを適用するには
追加下要素へ対して
trigger(“create”)
を実行する

$(document).on("pageinit","#main",function(e){
$("#box").append("<button>追加ボタン</button>");
$(#box).trigger("create");

});

とする

pageinitイベント以後に要素を追加したときには
trigger(“create”)
を忘れないこと

また、
日付コンポーネント
jQueryMobile Validation
など、サードパーティーコンポーネントの初期化はここで行うことになる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です