0

This is for Bootstrap v3. I wanted to use the following code to change active class when I click on the list item but it doesn't work.

<script type="application/javascript">
        $( document ).ready(function() {
            $(".nav li").on("click", function() {
                $(".nav li").removeClass("active");
                $(this).addClass("active");
          });
        });
</script>

Here is the full html.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
    <link rel="shortcut icon" href="{{ url_for('static', filename='images/favicon.ico') }}">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <script type="application/javascript" src="{{ url_for('static', filename='js/jquery-3.3.1.js') }}"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="{{ url_for('static', filename='css/base.css') }}">


    {% block head %}
    {% endblock %}
</head>
<body>
    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">Next</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav">
              <li class="active"><a href="{{ url_for('index') }}">Home <span class="sr-only"></span></a></li>
              <li><a href="{{ url_for('question') }}">Questions</a></li>
              <li><a href="{{ url_for('dashboard') }}">Dashboard</a></li>
          </ul>
          <form class="navbar-form navbar-left">
            <div class="form-group">
              <input type="text" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">Submit</button>
          </form>

          <ul class="nav navbar-nav navbar-right">

            {% if session['user_id'] %}
                <li>
                    <div class="navbar-text">{{ session['user_name'] }}</div>
                </li>
                <li><a href="{{ url_for('logout') }}">Sign out</a></li>
            {% else %}
                <li>
                <a href="{{ url_for('login') }}">Login</a>
                </li>
                <li><a href="{{ url_for('join') }}">Sign up</a></li>
            {% endif %}


          </ul>
        </div><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>
    <div class="main">
        {% block main %}{% endblock %}
    </div>

<script type="application/javascript">
        $( document ).ready(function() {
            $(".nav li").on("click", function() {
                $(".nav li").removeClass("active");
                $(this).addClass("active");
          });
        });
</script>
</body>
</html>
rluo
  • 93
  • 1
  • 1
  • 6
  • do you get any errors in console? I am unable to reproduce it - see simplified answer below – blurfus Jul 27 '18 at 06:56
  • 1
    Thanks. Looks like the issue is related to href="{{ url_for('question') }}". After clicking on the hyperlink, the request goes to the server and the template is rendered again, hence the class is reset. – rluo Jul 27 '18 at 07:20
  • if the issue is not reproducible, feel free to delete the question then :) – blurfus Jul 27 '18 at 14:57

0 Answers0