Jquery 如何在页面重新加载后突出显示导航栏中的活动菜单项
Bootstrap 3导航栏菜单是使用下面的代码定义的。 若从菜单中选择该项,则从服务器加载新页面。每个页面中都会出现相同的引导菜单。 但是,不用于选择菜单的下拉列表不会突出显示 如果允许本地存储,如何强制bootstrat自动点亮上次选择的菜单项:将上次选择的项存储在本地存储中。如果加载了新页面,则获取上次单击的菜单项名称,并通过向其中添加Jquery 如何在页面重新加载后突出显示导航栏中的活动菜单项,jquery,asp.net,asp.net-mvc,twitter-bootstrap,twitter-bootstrap-3,Jquery,Asp.net,Asp.net Mvc,Twitter Bootstrap,Twitter Bootstrap 3,Bootstrap 3导航栏菜单是使用下面的代码定义的。 若从菜单中选择该项,则从服务器加载新页面。每个页面中都会出现相同的引导菜单。 但是,不用于选择菜单的下拉列表不会突出显示 如果允许本地存储,如何强制bootstrat自动点亮上次选择的菜单项:将上次选择的项存储在本地存储中。如果加载了新页面,则获取上次单击的菜单项名称,并通过向其中添加activeclass来突出显示它 通过动态地将活动类添加到适当的项中,在服务器请求中更改生成的菜单。 如何在没有这种改变的情况下实现这一点? 服务器端使用
active
class来突出显示它
通过动态地将活动类添加到适当的项中,在服务器请求中更改生成的菜单。
如何在没有这种改变的情况下实现这一点?
服务器端使用ASP.NET MVC4。也许可以使用浏览器中的jquery+localstorage或一些简单的ASP.NET MVC4解决方案
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href='#' class="dropdown-toggle" data-toggle="dropdown">Dropdown 1</a>
<ul class="dropdown-menu" role="menu">
<li><a href='somepage'>Action11</a></li>
<li><a href='somepage'>Action12</a></li>
<li><a href='somepage'>Action13</a></li>
</ul>
</li>
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown">Dropdown 2</a>
<ul class="dropdown-menu" role="menu">
<li><a href='somepage'>Action121</a></li>
<li><a href='somepage'>Action122</a></li>
<li><a href='somepage'>Action123</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
您可以做的是在请求的操作中设置查看包值。之后,创建一个逻辑,在构造菜单时请求该值
我使用该机制,但使用actionfilter并将其用于操作或控制器注释我遇到了类似的问题,并编写了以下脚本:
var _urlpath = $(location).attr('pathname').split('/').pop();
$('#menu > li').each(function(){
var _this = $(this);
var _str = _this.find('a').attr('href');
_str !== _urlpath ? _this.removeClass('active') : _this.addClass('active');
});
这相当简单,过滤url路径名,将其存储在变量中,然后最重要的是,当加载新页面时,循环遍历所有li,并尝试将url哈希(对不起,我不知道确切的术语)与li>a
中的哈希匹配
也许有更好的办法
另外,您可能需要稍微修改一下代码 这是大量的工作。也许可以在客户端或其他类似的解决方案中使用几行jquery脚本和本地存储?我尝试过,但它不适用于包含下拉栏和查询字符串的Bootstrap3菜单。我更新了问题。我不得不用$(“#menu>ul>li”)替换$(“#menu>ul>li”),然后它开始运行良好且简单,只要您不使用服务器。这对解决我的问题有很大帮助。非常感谢。
var _urlpath = $(location).attr('pathname').split('/').pop();
$('#menu > li').each(function(){
var _this = $(this);
var _str = _this.find('a').attr('href');
_str !== _urlpath ? _this.removeClass('active') : _this.addClass('active');
});