0

各サイトに表示されるいくつかのコントロールを取得しました。これらのコントロールを現在アクティブなページに移動するために、pagebeforechangeイベントを使用しています。

$(document).bind('pagebeforechange',function(e,data) {
  var topageid=$(data.toPage).attr('id'); //MY QUESTION IS ON THIS LINE
  console.log("Changing page to "+topageid);
  $header = $('#myheader');
  $footer = $('#myfooter');
  $header.detach();
  $footer.detach();
  $header.prependTo(topageid);
  $footer.appendTo(topageid);
 });

上記のソースコードは、機能する場合と機能しない場合があります。これは、時々data.toPage、のようなURLしか含まれていないため...index.html#mypageです。とにかくのIDを検出する方法はtoPage

4

2 に答える 2

1

pagebeforeshowイベントではなく、イベントを使用できますpagebeforechange。違いは、前者は外部ページがDOMに追加された後に起動し、後者はそれが発生する前に起動することです。

あなたのために働くことができる他のページイベントがあります:http://jquerymobile.com/demos/1.2.0/docs/api/events.html

ドキュメントから(上記にリンク):

pagebeforechange

このイベントは、ページの読み込みまたは遷移の前にトリガーされます。

pagebeforeshow

実際のトランジションアニメーションが開始される前に、トランジション先の「toPage」でトリガーされます。

于 2012-10-17T18:36:39.880 に答える
0

イベントは2回発生します。pagebeforechange最初は、宛先ページが読み込まれる前に発生しdata.toPageます。これは、URLが含まれている場合です。2回目にイベントが発生すると、宛先ページが読み込まれます。その場合、にページDOMを含むクエリオブジェクトが取得されますdata.toPage。イベントに固執したい場合は、次のpagebeforechangeようなことを行うことができます:

if (typeof data.toPage != "string") {
    ... Do your stuff ...
}

使用するイベントに柔軟に対応できる場合は、Jasperのアドバイスに従い、pagebeforeshowを使用して、ページが移行される前に宛先ページのDOMを変更できるようにします。

于 2013-12-16T10:58:44.170 に答える