【发布时间】:2018-02-27 07:12:39
【问题描述】:
我有单页应用程序,用户应该能够从主菜单中选择值并在屏幕上显示容器。如果他们选择不同的值,那么除了该容器之外的所有内容都应该不可见。这是我的html示例。
$("#mainpg-menu li a").on('click', function(){
$(this).parent().addClass('active').siblings().removeClass('active');
});
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hearing Application</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta id="keep-alive-config" content="<cfoutput>#Application.sessionMinutes#</cfoutput>"/>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script language="javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="Bootstrap/Bootstrap_Confirmation/bootstrap-confirmation.js"></script>
<link rel="stylesheet" href="CSS/Main.css">
</head>
<body>
<div class="container" style="background-color:red; height:600px;">
<nav class="navbar navbar-default">
<div class="container-fluid">
<p class="navbar-text"><b>Welcome to My Application!</b></p>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">Menu<span class="caret"></span></a>
<ul class="dropdown-menu" id="mainpg-menu">
<li><a href="#" id="container1">Container 1</a></li>
<li><a href="#" id="container2">Container 2</a></li>
<li><a href="#" id="container3">Container 3</a></li>
<li><a href="#" id="container4">Container 4</a></li>
</ul>
</li>
<li>
<a href="#" data-toggle="popover">
<span class="glyphicon glyphicon-user"></span> jcrew</a>
</li>
<li>
<a href="#" data-toggle="confirmation">
<span class="glyphicon glyphicon-log-in"></span> Logout</a>
</li>
</ul>
</div>
</nav>
<div id="container1"></div>
<div id="container2"></div>
<div id="container3"></div>
<div id="container4"></div>
</div>
</body>
</html>
每个容器都应该使用主容器的整个空间并显示内容。每次用户选择不同的容器时,所有其他容器都应该是不可见的。我用过这个方法:
$('.container > div[id=' + id + ']').show();
$('.container > div:not([id=' + id + '])').hide();
id 应该有当前选择的元素 id。这适用于大多数浏览器,但我在 Safari 中发现了一些问题。由于某种原因,以前的容器未设置为display:none。由于我使用的是Bootstrap-twitter 和 JQuery,我想知道是否有更好的方法来处理这种情况?我需要在跨浏览器中可靠且兼容的东西。如果有人知道最好的方法,请告诉我。谢谢。
【问题讨论】:
标签: javascript jquery html css twitter-bootstrap