同じタイプのデータ (果物としましょう) を表示できる単一のページを作成しようとしています。次に、このページを Web サイト階層の任意の場所にロードしますが、毎回異なるパラメーターを使用します。
次のようなメイン ページがあり、同じページへの 2 つのリンクがありますshow.html
。
<div data-role="navbar" data-iconpos="top" data-theme="a" class="nav-ecommera">
<ul >
<li>
<a href="show.html?p=apples" data-role="button">Apples</a>
</li>
<li>
<a href="show.html?p=oranges" data-role="button">Oranges</a>
</li>
</ul>
</div>
2 つのボタンのそれぞれをクリックするとshow.html
、DOM にページの新しいインスタンスが作成されます。したがって、show.html 内のすべてのアイテムは、DOM 内で重複した ID を持つことになります。
私のjavascriptでは、show.htmlページを動的に埋めたい:
$('div[id="show"]').live("pagebeforeshow", function(e, data) {
var p = getUrlParameter("p");
show(p);
});
var show = function(p) {
$.ajax({
url:'http://show.com/?p='+p,
success: function(data) {
// Refresh 'show' page with new data
// First time: It's fine.
// Second time: 'show' page is duplicated in the DOM so it's messy.
}
});
}
これで、最初のshow.html
ロードはすべて問題ありません。ただし、2 回目はすべてがshow.html
2 回読み込まれ、DOM には多くの重複 ID が含まれます。
新しいページをロードする前に DOM から最初のページを削除する方法はありますか?
または:
ここで達成しようとしていることを実行するより良いアプローチはありますか?
更新:show
新しいページをロードするときに、ページ
の以前のインスタンスを削除しようとしました。2ページ目の表示に関する限り機能します。しかし、手動で削除した後、最初のページを 2 回目に表示する必要がある場合に問題があります。
その理由は、手動で削除したにもかかわらず、最初のページが既に読み込まれていると jQuery モバイルが認識しているように見えるためだと思います。そのため、再度アクセスしたときに最初のページが完全にリロードされません。私は次の一連のナビゲーションについて話している: ホーム -> リンゴ -> ホームに戻る -> オレンジ -> ホームに戻る -> リンゴ (ここでは欠陥のあるページが表示されます)。