【问题标题】:Switching Bootstrap active nav links with jquery使用 jquery 切换 Bootstrap 活动导航链接
【发布时间】:2020-09-11 19:28:04
【问题描述】:

我正在尝试合并一个 jquery 函数来自动更改我的 Bootsrap 导航栏中nav 链接的活动状态。我有一个基础 HTML 文件,它扩展为特定于应用程序的基础文件。然后将该文件扩展到由navbar 导航的各个页面。

这是特定于应用程序的 HTML:

{% extends "base.html" %}
{% load static %}

{% block css %}
  <link rel="stylesheet" href="{% static 'home/main.css' %}">
{% endblock css %}

{% block js %}
  <script>
    $(function() {
       $("#home-navs").click(function() {
          // remove classes from all
          $("#home-navs").removeClass("active");
          // add class to the one we clicked
          $(this).addClass("active");
       });
    });

  </script>
{% endblock js %}

{% block content %}
  <br>

  <div class="container status-update">
    <div class="container">
      <form>
        <div class="input-group-lg">
          <input type="text" class="form-control" value="What's new?">
        </div>
        <br style="height:20px">
        <button type="submit" class="btn btn-primary btn-lg" name="button">Post</button>
      </form>
    </div>
  </div>

  <br>

  <div class="container">
    <nav class="navbar navbar-expand-lg navbar-light" style="background-color: #6298bf">
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <div class="navbar-nav">
          <a class="nav-link active" id="home-navs" href="{% url 'home' %}">Activity Feed</a>
          <a class="nav-link" id="home-navs" href="{% url 'vehicle-updates' %}">Vehicle Updates</a>
          <a class="nav-link" id="home-navs" href="/space.html">Garage Updates</a>
        </div>
      </div>
    </nav>
  </div>

然后我在我的主要base.html 文件的头部有这个:

{% load static %}

<!doctype html>
<html lang="en">
  <head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

    {% block css %}{% endblock css %}



    <script src="{% static 'js/jquery-3.5.1.min.js' %}"></script>
    <script src="{% static 'js/jquery.waypoints.min.js' %}"></script>
    <script src="{% static 'js/infinite.min.js' %}"></script>
    {% block js %}{% endblock js %}


    <title>Test</title>
  </head>

页面和链接工作正常,当我单击不同的链接时,我无法更改navbar 上的active 状态。我不知道我是否在函数中引用了错误的项目,或者是什么。任何指导将不胜感激。谢谢!

【问题讨论】:

    标签: javascript html jquery django bootstrap-4


    【解决方案1】:

    您不能对多个 dom 元素使用 id。改用类。

    试着改成这样:

      $(".nav-link").click(function() {
          // remove classes from all
          $(".nav-link").removeClass("active");
          // add class to the one we clicked
          $(this).addClass("active");
       });
    

    如果您只想将其范围限定为特定导航的元素,请将 id 放入导航本身,然后使用选择器:$("#main-nav .nav-link")

    【讨论】:

    • 感谢您的回复。我尝试了您的建议,但仍然无法正常工作。奇怪的是,当我单击其中一个链接时,它似乎会短暂跳回到active 状态,然后再返回第一个默认值。如果我从第一个链接中删除默认的active 状态,似乎没有任何改变。不知道下一步该往哪里看。会不会和script所在的位置有关?
    猜你喜欢
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 2020-09-11
    相关资源
    最近更新 更多