2012-03-03 4 views
2

jQuery Mobileでページを移動しようとしていますが、動的に作成されたページやajaxが読み込まれた場合に問題があります。jQuery Mobileでページが上書きされます

page3.appendTo($.mobile.pageContainer);を使用してページを動的に作成するページ(page_2)、次に$.mobile.changePage(page3);を使用しています。それはうまく動作し、$.mobile.changePage($("#page_2"));を実行してpage_2に戻ることができます。ここまでは順調ですね。

問題は、別のページ(例えば、page_1)からpage_2に着陸するときです。この場合、page_3page_1が残っています)を作成すると何らかの理由でからpage_2が消えます。それは私が新しく作成されたページから技術的に所属するpage_2に戻るのを妨げます。

理由は何ですか? page_2が削除されないようにする方法はありますか?

あなたはそこにそれを試してみることができます。要するにpage_1page_2


page_1 -> page_2
page_1 -> page_2 -> page_3
page_1 -> page_2 -> page_3 -> page_2
page_2 -> page_3 -> page_2 -> page_3作品(あなたが好きしかし、多くのループ)

を失敗したワークスあなたの助けをありがとう!

答えて

1

あなたは<div data-role="page" id="page_2">要素(2ページ)にtruedata-dom-cache属性を設定することができますので、それが離れてからナビゲートだ後、それが削除されていない:

<div data-dom-cache="true" data-role="page" id="page_2"> 
    ... 
</div> 

文書番号:http://jquerymobile.com/demos/1.1.0-rc.1/docs/api/data-attributes.html

jQuery Mobileのデフォルトの動作は、ユーザーが離れて移動した後にAJAXによって取り込まれたDOMから疑似ページを削除することです。したがって、リモートドキュメントにリンクするときは、ドキュメントのURLを指す絶対リンクを使用し、そのIDは<div data-role="page">要素ではありません。

あなたの動的に作成されたページの3つは戻って2ページ目に移動するには、これを使用しています。

$.mobile.changePage('/page_2.html'); 

あなたは、このようなページにリンクしている場合、彼らは、デフォルトでは以下となります。

$.mobile.changePage($("#page_2")); 

それはに変えることができますそれらが離れて移動された後にDOMから削除される場合、DOMに最小限のページがある場合、モバイルデバイスのブラウザをクラッシュさせる可能性は低くなります。また、ページがキャッシュから取り込まれる可能性もあり、その場合はHTTPリクエストは行われません。

+0

ありがとう、それは多くの意味を作り、私の問題を修正します。私はデータドームキャッシュに慎重になるだろうが、それは大きな助けとなる。私のサイトは、大量のデータ転送を必要とするページと、データを表示するためのページの周りに編成されています。私はデータ転送をやり直すのを避けるために後者の動的にしようとしますが、jQueryモバイルはそれほど自然ではありません。 –

1

私はこのためにjqmイベントを使用することをお勧め:

$("#page3link").click(function (e) { 
    e.stopImmediatePropagation(); 
    e.preventDefault(); 
    createPage3(); 
    return false; 
}); 

ボタン2のリンクに戻るか、単に入れることができますし、時間REF =「#のPAGE2」のためにあなたが同じことを行う必要があります

+0

ご返信ありがとうございます。ジャスパーの答えは私の問題を解決しました。私は後でjqmイベントを保存します;) –

関連する問題