0

動作しないpagechangeにバインドしようとしています。次の基本ページが与えられた場合、ページ 2 がいつ表示されるかをどのように知ることができますか?

<div data-role="page" id='page1'>
  <div data-role="content">
    <h3>Page 1</h3>
    <a href="#page2"
       data-role="button" data-transition="slide" data-inline="true"
       >Open Page 2</a>
  </div>
</div>

<div data-role="page" id='page2'>
  <div data-role="content">
    <h3>Page 2</h3>
    <a href="#page1"
       data-role="button" data-icon="arrow-l" data-rel="back" data-inline="true"
       >Back to page 1</a>
  </div>
</div>

JavaScript

$("#page2").bind("pageshow", function(toPage, ui) {
  console.log($(this));
  console.log(toPage);
});

変更イベントは発生しませんが、使用する$(document)と発生しますが、両方$(this)toPage

リモートデータを取得する機能を実行できるように、page2 が最初に表示された時期を知りたいです。

4

1 に答える 1

2

ページ イベントは次のようにバインドする必要があります。

$(document).on("pageshow", "#page2" ,function(toPage, ui) {
   console.log($(this));
   console.log(toPage);
});

作業例: http://jsfiddle.net/qvZst/

しかし、page2 が初めて利用可能になったときに何かをしたい場合は、pagebeforecreate というページ イベントを使用する必要があります。

$(document).on("pagebeforecreate", "#page2" ,function() {
   console.log($(this));
   console.log(toPage);
});

残念ながらpagebeforecreate、ロードされようとしているページであるため、toPage はありません。pagebeforeshowページが表示される前にトリガーされ、前のページデータにアクセスするために使用できるため、使用することもできます。

ページ イベントとその順序の詳細については、私のブログARTICLEをご覧ください。

別の解決策もあります。ページ 1 の実行中にも実行できますが、ページ 2 のpagebeforehide後にトリガーされpagebeforecreateます。ページ イベント シーケンスは私の記事で見つけることができます。

于 2013-07-16T11:34:32.980 に答える