【问题标题】:how do i set navbar item to be active by default before the user clicks a nav link?在用户单击导航链接之前,如何将导航栏项目默认设置为活动状态?
【发布时间】:2019-03-18 05:55:45
【问题描述】:

我有一个正在开发的网站,并且我设置了导航项,因此当您单击导航链接时,它会将活动类更改为您单击的链接。

说到这里,如何在导航栏中将某个链接设置为默认处于活动状态?

代码:

$(".nav-item a").on("click", function() {
  $(".nav-item a").removeClass("active");
  $(this).addClass("active");
});
.nav-item a.active {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
  <div class="collapse navbar-collapse" id="navbarResponsive">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item">
        <a class="nav-link" href="#">Home
					<span class="sr-only">(current)</span>
        </a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">About</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Services</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Contact</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Shop</a>
      </li>
    </ul>
  </div>
</nav>

我对 javascript 还是很陌生,所以任何帮助都会很棒(即使它不起作用)

编辑:看来我没有添加足够的细节,对不起。

我希望主页导航链接保持活动状态,直到用户单击另一个导航链接到页面的另一部分(我正在考虑滚动到网站的不同部分,但那完全是一个不同的问题)。考虑到这一点,我希望网站功能保持不变,但在单击其他链接时更改默认活动链接。

【问题讨论】:

  • 您想激活哪个链接?有什么标准吗?或者任何随机链接都可以设置为活动状态?
  • 为什么不在 html 中的任何默认元素上添加 active 类? &lt;a class="nav-link active" href="#"&gt;
  • 同意@cjmling - 如果没有设置活动链接的编程标准并且应该始终相同,最好只在 HTML 中进行设置。
  • @cjmling 我一开始就是这样,但是当点击另一个链接时它会保持活动状态

标签: javascript jquery html navbar


【解决方案1】:

只需将活动类添加到导航链接

$(".nav-item a").on("click", function() {
  $(".nav-item a").removeClass("active");
  $(this).addClass("active");
});
.nav-item a.active {
  color: red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
  <div class="collapse navbar-collapse" id="navbarResponsive">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item">
        <a class="nav-link" href="#">Home
					<span class="sr-only">(current)</span>
        </a>
      </li>
      <li class="nav-item">
        <a class="nav-link active" href="#">About</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Services</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Contact</a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Shop</a>
      </li>
    </ul>
  </div>
</nav>

【讨论】:

  • 我试试看。编辑:成功了!感谢您的帮助!解决方案现在看起来很明显:D
【解决方案2】:

您的代码是关于 CLICK 操作的,而您不想要它。你应该使用

$('.nav-item a').addClass("active");

in out of function 点击​​正文:

<script 
src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"> 
</script>
<nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="#">Home
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link active" href="#">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Services</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Shop</a>
</li>
</ul>
</div>
</nav>

CSS:

.nav-item a.active 
{
color: red;
}

JAVASCIPT:

<script>
$('.nav-item a').addClass("active");
</script>

【讨论】:

  • 这只是使所有链接都处于活动状态。
猜你喜欢
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多