我有一个非常简单的 jQuery 移动页面,标题中有一个持久的导航栏,带有链接到“页面”(data-role="page"项目)的按钮。
一切正常,导航栏上的按钮会在您从一页导航到另一页时突出显示。
我的问题是我想在服务器端(在 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>