javascript - want to make the current <li> active - Stack Overflow

i'm creating parallax webpagei want to make the clicked<li class="active">ac

i'm creating parallax webpage

i want to make the clicked

<li class="active">

active and make the others unactive. and i just don't know how to do it. i'm using twitter bootstrap for the navigation

<ul class="nav navbar-nav navbar-navi">
   <li class="active"><a href="#home" class="scroll">Home</a></li>
   <li><a href="#about" class="scroll">About</a></li>
   <li><a href="#" class="scroll">Works</a></li>
   <li><a href="#" class="scroll">Services</a></li>
   <li><a href="#" class="scroll">Stats</a></li>
   <li><a href="#" class="scroll">Team</a></li>
   <li><a href="#" class="scroll">Contact</a></li>
</ul>

CSS

.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:focus, .navbar-default .navbar-nav>.active>a:hover
 {
   color: #B38441;
   background-color:transparent;
 }

Js i'm using for the smooth scroll

 $(".scroll").click(function(event){
     event.preventDefault();
     //calculate destination place
     var dest=0;
     if($(this.hash).offset().top > $(document).height()-$(window).height()){
          dest=$(document).height()-$(window).height();
     }else{
          dest=$(this.hash).offset().top;
     }
     //go to destination
     $('html,body').animate({scrollTop:dest}, 1500,'swing');
 });

i'm creating parallax webpage

i want to make the clicked

<li class="active">

active and make the others unactive. and i just don't know how to do it. i'm using twitter bootstrap for the navigation

<ul class="nav navbar-nav navbar-navi">
   <li class="active"><a href="#home" class="scroll">Home</a></li>
   <li><a href="#about" class="scroll">About</a></li>
   <li><a href="#" class="scroll">Works</a></li>
   <li><a href="#" class="scroll">Services</a></li>
   <li><a href="#" class="scroll">Stats</a></li>
   <li><a href="#" class="scroll">Team</a></li>
   <li><a href="#" class="scroll">Contact</a></li>
</ul>

CSS

.navbar-default .navbar-nav>.active>a, .navbar-default .navbar-nav>.active>a:focus, .navbar-default .navbar-nav>.active>a:hover
 {
   color: #B38441;
   background-color:transparent;
 }

Js i'm using for the smooth scroll

 $(".scroll").click(function(event){
     event.preventDefault();
     //calculate destination place
     var dest=0;
     if($(this.hash).offset().top > $(document).height()-$(window).height()){
          dest=$(document).height()-$(window).height();
     }else{
          dest=$(this.hash).offset().top;
     }
     //go to destination
     $('html,body').animate({scrollTop:dest}, 1500,'swing');
 });
Share Improve this question asked Mar 21, 2015 at 12:00 DanielDaniel 1,4666 gold badges21 silver badges37 bronze badges 1
  • Try this jsfiddle/ukh9dp5y – Akshay Commented Mar 21, 2015 at 12:03
Add a ment  | 

4 Answers 4

Reset to default 2
$('.nav').click(function(){
    $('.nav').removeClass('active');
    $(this).addClass('active');
});

Add the following two lines in your click function

$(".scroll").parent().toggleClass("active", false);
$(this).parent().toggleClass("active", true);

The first line removes the class active from all li elements. The second adds active back to the clicked a element's parent = li.

Add following script your page
<script type="text/javascript">
    $('document').ready(function (){
        $('.liactive').click(function (){
            $('.liactive').removeClass('active');
            $(this).addClass('active');
        });
    });
</script>
You can add class and id in every li tag, like following.

    <ul class="nav navbar-nav navbar-navi">
    <li class="active liactive"><a href="#home" class="scroll">Home</a></li>
    <li class="liactive" id="about"><a href="#about" class="scroll">About</a></li>
    <li class="liactive" id="work"><a href="#" class="scroll">Works</a></li>
    <li class="liactive" id="services"><a href="#" class="scroll">Services</a></li>
    <li class="liactive" id="stats"><a href="#" class="scroll">Stats</a></li>
    <li class="liactive" id="team"><a href="#" class="scroll">Team</a></li>
    <li class="liactive" id="contact"><a href="#" class="scroll">Contact</a></li>
</ul>    

this was the solution ...

HTML

<body data-spy="scroll" data-target="#navbar-example">
<div id="navbar-example">
  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container-fluid">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
          <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="#home">DANIEL <span class="brand">THE DEVELOPER</span></a>
      </div>
      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav navbar-navi">
          <li class="active"><a href="#home" class="scroll">Home</a></li>
          <li><a href="#about" class="scroll">About</a></li>
          <li><a href="#" class="scroll">Works</a></li>
          <li><a href="#" class="scroll">Services</a></li>
          <li><a href="#" class="scroll">Stats</a></li>
          <li><a href="#" class="scroll">Team</a></li>
          <li><a href="#" class="scroll">Contact</a></li>
        </ul>
      </div>
    </div>
  </nav>
</div>

CSS

 body{
  position: relative;
 }

JS

 $('body').scrollspy({ target: '#navbar-example' })
 $('[data-spy="scroll"]').each(function () {
   var $spy = $(this).scrollspy('refresh')
 })

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744732279a4590537.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信