jquery 移动 - JQM 1.4.5 导航栏在面板覆盖后不保持活动状态
jquery mobile - JQM 1.4.5 navbar not keeping active state after panel overlay
https://jsfiddle.net/7xwrxkrd/
最初 Tab One 设置为 ui-btn-active 和 ui-state-persist 样式 - 如果您单击汉堡图标,面板覆盖会显示,如果您单击离开 Tab One仍然有效。
但是,如果您 select 选项卡二然后单击汉堡图标以显示面板覆盖,选项卡二将失去其活动状态。
有什么方法可以让我在使用面板覆盖时保持选项卡处于活动状态?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
<div data-role="page">
<div data-role="header" data-position="fixed" data-fullscreen="false">
<a href="#panel-overlay" class="ui-btn ui-btn-left ui-alt-icon ui-nodisc-icon ui-corner-all ui-btn-icon-notext ui-icon-bars">Menu</a>
<h1>Demo</h1>
</div>
<div data-role="tabs" id="tabs" style="padding:0px;">
<div data-role="navbar">
<ul>
<li><a href="#one" class="ui-btn-active ui-state-persist">Tab One</a></li>
<li><a href="#two">Tab Two</a></li>
<li><a href="#three">Tab Three</a></li>
</ul>
</div>
<div id="one" class="ui-content" date-role="content">
<p>First tab Content</p>
</div>
<div id="two" class="ui-content" date-role="content">
<p>Second tab contentnt</p>
</div>
<div id="three" class="ui-content" date-role="content">
<p>Thrid tab contentnt</p>
</div>
</div>
<div data-role="panel" id="panel-overlay" data-display="overlay">
<ul data-role="listview">
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
</ul>
</div>
</div>
</body>
</html>
这是针对此问题的通用修复:
$(document).on("panelbeforeopen", "div[data-role='panel']", function(e,ui) {
$.mobile.activeClickedLink = null;
});
如果您的代码中已有 panelbeforeopen
回调,只需将修补程序 $.mobile.activeClickedLink = null;
放入您的函数中即可。
https://jsfiddle.net/7xwrxkrd/
最初 Tab One 设置为 ui-btn-active 和 ui-state-persist 样式 - 如果您单击汉堡图标,面板覆盖会显示,如果您单击离开 Tab One仍然有效。
但是,如果您 select 选项卡二然后单击汉堡图标以显示面板覆盖,选项卡二将失去其活动状态。
有什么方法可以让我在使用面板覆盖时保持选项卡处于活动状态?
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
<body>
<div data-role="page">
<div data-role="header" data-position="fixed" data-fullscreen="false">
<a href="#panel-overlay" class="ui-btn ui-btn-left ui-alt-icon ui-nodisc-icon ui-corner-all ui-btn-icon-notext ui-icon-bars">Menu</a>
<h1>Demo</h1>
</div>
<div data-role="tabs" id="tabs" style="padding:0px;">
<div data-role="navbar">
<ul>
<li><a href="#one" class="ui-btn-active ui-state-persist">Tab One</a></li>
<li><a href="#two">Tab Two</a></li>
<li><a href="#three">Tab Three</a></li>
</ul>
</div>
<div id="one" class="ui-content" date-role="content">
<p>First tab Content</p>
</div>
<div id="two" class="ui-content" date-role="content">
<p>Second tab contentnt</p>
</div>
<div id="three" class="ui-content" date-role="content">
<p>Thrid tab contentnt</p>
</div>
</div>
<div data-role="panel" id="panel-overlay" data-display="overlay">
<ul data-role="listview">
<li><a href="#">Menu 1</a></li>
<li><a href="#">Menu 2</a></li>
</ul>
</div>
</div>
</body>
</html>
这是针对此问题的通用修复:
$(document).on("panelbeforeopen", "div[data-role='panel']", function(e,ui) {
$.mobile.activeClickedLink = null;
});
如果您的代码中已有 panelbeforeopen
回调,只需将修补程序 $.mobile.activeClickedLink = null;
放入您的函数中即可。