これが非常に単純なフィドルです。
ヘッダーバーの「プリセット」ボタンをクリックすると、ダイアログが開きます。ダイアログの[閉じる]ボタンをクリックすると、元のページに戻るのではなく、ページの最後のページ(ダイアログ自体を除く)(コンテンツのあるページ)に移動しますThis is another page
。どうして?自動的に挿入された戻るボタンを修正して、適切に動作するようにする方法はありますか(ダイアログに含まれている「ホーム」ボタンのように)、それができない場合は、閉じるボタンを削除する方法があります。
<div data-role="page" id="index">
<header data-role="header">
<h1>Index</h1>
<a href="#presets" data-icon="star" class="ui-btn-right" data-transition="pop" data-rel="dialog">Presets</a>
</header>
<article data-role="content">
<div>This is the main page</div>
</article>
</div>
<div data-role="page">
This is another page
</div>
<div data-role="page" id="presets">
<header data-role="header">
<h1>Presets</h1>
<a href="#index" data-icon="home" data-iconpos="notext"></a>
</header>
<div data-role="content">
This is a dialog!
</div>
</div>
アップデート
Taifunが指摘したように、問題はページにIDがないことです。IDを追加すると、最初のフィドルが修正されます。ただし、このフィドルに示されているように、私の実際の状況はもう少し複雑です。
ここでは、実際にノックアウトを使用して動的にページを作成し、データバインディングを介してそれらのページにIDを割り当てていますが、これらのIDは何らかの理由でjQueryMobileによって認識されないようです。Firebugを見ると、IDがページの属性に正しく追加されていることがわかりますが、ダイアログを閉じると、元のページではなく3ページになります。
アップデート2
簡単な修正です。ノックアウトがテンプレートとして使用するHTMLのビットにダミーIDを追加しました。
<!-- ko foreach: pages -->
<div data-role="page" data-bind="attr: {id: name}" id="dummy">
This is <span data-bind="text:name"></span>
</div>
<!-- /ko -->
ここを参照してください。
ダミーIDはノックアウトに置き換えられているため、そのページへのリンクは正しく機能し、jQuerymobileは満足しているようです。