2012-07-04 2 views
1

У меня есть вопрос об изменении состояния активного класса вкладки, если нажата другая вкладка. Приведенный ниже код переключает класс, как ожидается, для отображения другого цветного изображения вкладки, однако, если я нажму другую вкладку, обе вкладки будут отображаться как активные.Сброс значения вкладки до состояния по умолчанию css

Мой вопрос заключается в том, что мне нужно добавить, чтобы вернуть активную вкладку в состояние по умолчанию и активировать вкладку с новым щелчком в активное состояние.

$(document).ready(function(){ 
    $('.slide-out').each(function(){ 
     var $this = $(this); 
     var defaultPos = roundValue($this.css('left')); 

     $('.tab', $this).on('click', function(){ 
      var tab = $(this);                    
      var goTo = tab.attr('slide-To'); 
      var currentPos = roundValue($this.css('left')); 

      if(goTo == currentPos){ 
       goTo = defaultPos; 
      }          

      $this.animate({'left': goTo}, 'slow'); 
      $(this).toggleClass('handle2-selected');          
     }); 
    }); 
}); 
+0

Удалите выбранный класс со всех вкладок, прежде чем применять его к нужному. –

ответ

1

Вы должны переключить класс на предыдущей вкладке так же, как и для следующей вкладки. или вы можете написать мой код перед началом анимации.

$('.tab').removeClass('handle2-selected'); 
1

Вместо toggleClass вы должны удалить handle2 выбранный класс из вкладки затем применить его к текущему (это)

Что-то вроде

$('.tab').removeClass('handle2-selected'); 
tab.addClass('handle2-selected'); 

Update:

Для удаления активного класса на активной вкладке

// check if current clicked tab has the active class or not 
if(tab.hasClass('handle2-selected')) { 
    // if current clicked tab has active class, remove it 
    tab.removeClass('handle2-selected'); 
    // add other codes for this state if needed 
} else { 
    // if not then do the normal removing and adding to current tab 
    $('.tab').removeClass('handle2-selected'); 
    tab.addClass('handle2-selected'); 
} 
+0

Если я нажму на вкладку, она будет работать, как ожидалось, по красному краю, и если я нажму на другую вкладку, вкладка prev переключит обратно на значение по умолчанию, а новая вкладка получит класс, выбранный «handle2». Единственная проблема, с которой я столкнулся, - это если я хочу, чтобы активная вкладка вернулась к умолчанию, она остается активной. Он удаляет класс только в том случае, если я нажму другую вкладку. Что мне нужно добавить, чтобы при повторном нажатии активной вкладки она также удаляла выбранный класс. Я думал добавить удаление, прежде чем анимация сделает трюк. – user1502434

+0

@ user1502434 Почему вы хотите удалить активный класс на активной вкладке? разве это не победит цель? если вы действительно хотите удалить активный класс на активной вкладке при нажатии, вам просто нужно проверить класс на текущей вкладке, и если класс существует, удалите его, я обновлю свой ответ – Huangism

+0

Это вертикальные скользящие вкладки, которые показывают различный контент, основанный на том, если они скользят влево и вправо, однако все вкладки и контент div имеют позицию по умолчанию. Верхняя вкладка щелкнула и сместилась вправо, добавлен класс, чтобы показать эту вкладку как активную. Если я снова нажму на одну и ту же вкладку, она вернется влево к позиции по умолчанию и класс должен быть удален. На данный момент единственный способ удалить класс - если я нажму другую вкладку, мне нужен активный класс вкладки, чтобы удалить его на 2 события. Если я нажму активную, и если я нажму любую другую вкладку. – user1502434

Смежные вопросы