[英]MVC Bootstrap Navbar - active class stays to just one <li> element
我在asp.net mvc应用程序中有一个引导导航栏,我要做的就是将活动类从导航栏菜单更改为当前选定的元素。
我设法通过使用以下jquery部分实现了这一点:
$(document).ready(function () {
$('ul.nav.navbar-nav').find('a[href="' + location.pathname + '"]')
.closest('li').addClass('active');
$(this).siblings().removeClass('active');
});
实现此功能后,我的两个导航栏链接均为荧光笔。 首先,只有一个具有默认active
类的鼠标,然后单击该链接到其他链接,它也变成了荧光笔,但是默认active
仍然保持活动状态,因此我得到了两个活动链接。
有人可以帮我使此工作正常吗
引导程序:
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
@Html.ActionLink("blah blah", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li>@Html.ActionLink("blah", "Create", "Todoes")</li>
<li class="active">@Html.ActionLink("ALL", "Index", "Todoes")</li>
<li>@Html.ActionLink("blah2", "", "Todoes")</li>
<li>@Html.ActionLink("blah3", "", "Todoes")</li>
</ul>
</div>
</div>
为什么不直接从.cshtml文件中的剃刀控制它呢?
我这样做:
public string CheckActive(string actionName, string controllerName)
{
return ((ViewContext.RouteData.Values["action"].ToString().ToLower() == actionName.ToLower() && ViewContext.RouteData.Values["controller"].ToString().ToLower() == controllerName.ToLower()) ? "active" : string.empty);
}
如果给定的actionName
和controllerName
与当前的Action和Controller相匹配,则此方法仅返回active。
这样,您将像这样使用它:
<li class="@CheckActive("actionInActionLink", "controllerInActionLink")">@Html.ActionLink("Link text", "actionInActionLink", "controllerInActionLink")</li>
请尝试以下方法:
$(document).ready(function () {
$('li').each(function(){
$(this).removeClass('active');
});
$('ul.nav.navbar-nav').find('a[href="' + location.pathname + '"]').closest('li').addClass('active');
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.