【发布时间】:2021-06-02 11:56:02
【问题描述】:
我在 ASP.NET MVC 核心网站中使用 bootstrap v4.3.1。我有一个导航栏,其中第一个 li 的 a 标签上有 .active 类:
<nav class="navbar navbar-expand-md navbar-toggleable-md navbar-dark bg-navbar fixed-top mb-3">
<div class="container">
<a
class="navbar-brand"
asp-area=""
asp-controller="Home"
asp-action="Index"
>
<img id="nav-logo" src="~/Images/LOGO's.png" alt="G&Z Installation" />
</a>
<button
class="navbar-toggler"
type="button"
data-toggle="collapse"
data-target=".navbar-collapse"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-md-inline-flex flex-md-row-reverse">
<ul class="nav ml-auto">
<li class="nav-item">
<a
class="nav-link active text-light nav-text"
asp-area=""
asp-controller="Home"
asp-action="Index"
>
Home
</a>
</li>
<li class="nav-item">
<a
class="nav-link text-light nav-text"
asp-area=""
asp-controller="Home"
asp-action="SolarPanels"
>
Zonnepanelen
</a>
</li>
<li class="nav-item">
<a
class="nav-link text-light nav-text"
asp-area=""
asp-controller="Home"
asp-action="AircoAndHeatPump"
>
Airco & Warmtepomp
</a>
</li>
<li class="nav-item">
<a
class="nav-link text-light nav-text"
asp-area=""
asp-controller="Home"
asp-action="Contact"
>
Contact
</a>
</li>
@*
<li class="nav-item">
<a
class="nav-link text-light"
asp-area=""
asp-controller="Home"
asp-action="Privacy"
>
Privacy
</a>
</li>
*@
</ul>
</div>
</div>
</nav>;
我添加了这段代码:
$(document).ready(function () {
$("a.nav-link.text-light.nav-text").on("click", function () {
$(".nav").find(".active").removeClass("active");
$(this).addClass("active");
});
});
单击其他 li 项目后,活动类未更改。它停留在第一个 li 项目上。 Bootstrap 加载在布局页面的头部:
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
并且脚本加载在布局页面的底部:
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
编辑: 当我在浏览器中查看元素时,当我单击第二个时,我可以看到活动类已从第一个 li 项中删除,但随后我看到它再次自动添加到第一个 li 项中。好像它刷新或某物.. 如果我编辑 js 代码(以及 li 项上的 .active 类而不是 a 标签),它可以工作,但是导航不再工作了。这是因为“e.preventDefault()”在哪里“e”用于 a 标签。但它不适用于 .active 类。
$(document).ready(function () {
$('.nav li a').click(function (e) {
$('.nav li.active').removeClass('active');
var $parent = $(this).parent();
$parent.addClass('active');
e.preventDefault();
});});
自从我使用 bootstrap 和 asp.net mvc 以来已经有一段时间了。我没有看到我做错了什么。有什么建议吗?
【问题讨论】:
-
您的脚本路径错误,能否将其添加为片段
标签: javascript html css bootstrap-4 asp.net-core-mvc