「ページ」( data-role="page"アイテム)にリンクするボタンを備えた、ヘッダーに永続的なナビゲーションバーを持つ非常に単純なjQueryモバイルページがあります。
すべてがうまく機能し、ページからページに移動すると、ナビゲーションバーのボタンが強調表示されます.
私の問題は、これらのナビゲーション バーをサーバー側 (PHP) で動的に生成したいということです。しかし、ajax を使用してナビゲーション バーを追加すると、ui-btn-activeクラスとui-state-persistクラスが正しく機能せず、ボタンが期待どおりに強調表示/保持されないようです。
ナビゲーションバーが定義されたページがあるとします。
<div data-role="page" id="settings" data-theme="a">
私が示すことができる最も簡単な例は、次のようにコンテンツを置き換えることです:
var htmlContent = $("#settings").html();
$("#settings").html(htmlContent);
これを行うと、ボタンがアクティブな状態を保持しなくなります。ナビゲーションバーがjQueryの認識から「切断」されたようで、DOMなどを再同期する必要があります。
興味深いことに、ナビゲーション バー自体も適切に保持されているとは思えません。コンテンツを置換した後は遷移しませんが、置換されたページのページ コンテンツはナビゲーション バーの後ろに表示されます(したがって、以下のサンプルではすべての br が表示されます)。
男、これが理にかなっていることを願っています:)
これが私の全体のサンプルです... head タグ内:
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" charset="utf-8">
function loadSomeHTML() {
var htmlContent = $("#settings").html();
$("#settings").html(htmlContent);
}
</script>
body タグの内容は次のとおりです。
<div data-role="page" id="welcome" data-theme="a">
<div data-role="header" data-position="fixed" data-id="TestPersist">
<div data-theme="" data-role="navbar" data-iconpos="top">
<ul>
<li>
<a href="#schedule" id="navbar_schedule" data-theme="" data-icon="grid" class="navlink">
Schedules
</a>
</li>
<li>
<a href="#settings" id="navbar_settings" data-theme="" data-icon="gear" class="navlink">
Settings
</a>
</li>
</ul>
</div>
</div><!-- /header -->
<div data-role="content" data-theme="">
This is the welcome page
</div><!-- /content -->
</div>
<div data-role="page" id="schedule" data-theme="a">
<div data-role="header" data-position="fixed" data-id="TestPersist">
<div data-theme="" data-role="navbar" data-iconpos="top">
<ul>
<li>
<a href="#schedule" id="navbar_schedule" data-theme="" data-icon="grid" class="navlink ui-btn-active ui-state-persist">
Schedules
</a>
</li>
<li>
<a href="#settings" id="navbar_settings" data-theme="" data-icon="gear" class="navlink">
Settings
</a>
</li>
</ul>
</div>
</div><!-- /header -->
<div data-role="content" data-theme="">
This is the sched page
<input type="button" value="Replace content in settings page" onclick="loadSomeHTML();">
</div><!-- /content -->
</div>
<div data-role="page" id="settings" data-theme="a">
<div data-role="header" data-position="fixed" data-id="TestPersist">
<div data-theme="" data-role="navbar" data-iconpos="top">
<ul>
<li>
<a href="#schedule" id="navbar_schedule" data-theme="" data-icon="grid" class="navlink">
Schedules
</a>
</li>
<li>
<a href="#settings" id="navbar_settings" data-theme="" data-icon="gear" class="navlink ui-btn-active ui-state-persist">
Settings
</a>
</li>
</ul>
</div>
</div><!-- /header -->
<div data-role="content" data-theme="">
<br><br><br><br><br><br><br>This is the settings page
</div><!-- /content -->
</div>