Search code examples
htmlmaterialize

How to change the active state of a navbar link in a materialize


How to change the activity of the link state, depending on which one was clicked.Simply at the moment, only the home one is active all the time, and I do not know how to implement a change of lines between links.

  <nav class="white z-depth-0">
    <div class="container">
      <div class="nav-wrapper">
        <a class="brand-logo black-text"><img src="/assets/images/logo.png"></a>
        <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons black-text">menu</i></a>
        <ul class="right hide-on-med-and-down">
          <li  class="active"><a class="black-text" routerLink="/home">Home</a></li>
          <li><a class="black-text" routerLink="/services">Services</a></li>
          <li><a class="black-text" routerLink="/contacts">COntacts</a></li>
        </ul>
      </div>
    </div>
  </nav>

<ul class="side-nav" id="mobile-demo">
  <li><a class="black-text" routerLink="/home">Home</a></li>
  <li><a class="black-text" routerLink="/services">Services</a></li>
  <li><a class="black-text" routerLink="/contacts">COntacts</a></li>
</ul>

Solution

  • All is in the below line :

    <li  class="active"><a class="black-text" routerLink="/home">Home</a></li>
    

    Toggle the class "active" to the current <li>

    full code :

    <style type="text/css">
    .active {background-color: #F0F;}
    </style>
    
    <nav class="white z-depth-0">
        <div class="container">
          <div class="nav-wrapper">
            <a class="brand-logo black-text"><img src="/assets/images/logo.png"></a>
            <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons black-text">menu</i></a>
            <ul class="right hide-on-med-and-down">
              <li  class="active"><a class="black-text" routerLink="/home">Home</a></li>
              <li><a class="black-text" routerLink="/services">Services</a></li>
              <li><a class="black-text" routerLink="/contacts">COntacts</a></li>
            </ul>
          </div>
        </div>
      </nav>
    
    <ul class="side-nav" id="mobile-demo">
      <li><a class="black-text" routerLink="/home">Home</a></li>
      <li><a class="black-text" routerLink="/services">Services</a></li>
      <li><a class="black-text" routerLink="/contacts">COntacts</a></li>
    </ul>
    
    <script
    src="https://code.jquery.com/jquery-3.3.1.min.js"
    integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
    crossorigin="anonymous"></script>
    
    <script type="text/javascript">
        $(document).ready(function(){
            $('ul.right li').on('click', function(){
                var clicked = $(this);
                $('ul.right li').each(function(){
                    if($(this).hasClass('active')){
                        $(this).removeClass('active');
                    }
                });
                $(this).addClass('active');
            });
        });
    </script>