2010-06-27 3 views
1

Это добавляет класс в li. При щелчке на другом листе также добавляется ток класса. Но теперь у меня два тока. Ниже вы заметите, что пытаетесь удалить ток класса из li, который изначально был текущим.Удалить класс с jquery из LI

var 
$tabs = $('.promo-tabs li'), 
$panes = $('.promo-panes > div'); 

$tabs.click(function(){ 
    $(this).addClass('current') 
    $(this).parent().siblings().find('li').removeClass('current'); 
    $panes.eq($tabs.index(this)).fadeIn().siblings().hide(); 
    return false; 
}); 

//Init Promo Tabs 
$tabs.first().click(); 

Любые идеи о том, как настроить эту линию так, класс удаляется, как только другой Ли нажал бы здорово

$(this).parent().siblings().find('li').removeClass('current'); 

ответ

4

Почему просто не

$tabs.removeClass('current') 

размещены перед тем

$(this).addClass('current') 

? Другими словами, просто избавьтесь от «тока» от всех элементов <li>, а затем добавьте его в тот, который был нажат.

+0

Совершенная спасибо! Просто! – Andy

1

должно работать:

$tabs.click(function(){ 
    $tabs.removeClass('current');  
    $(this).addClass('current') 
    $panes.eq($tabs.index(this)).fadeIn().siblings().hide(); 
    return false; 
}); 
+0

Спасибо за ввод. – Andy

1

Я думаю, что ответ на ваш вопрос в том, что это

$(this).parent().siblings().find('li').removeClass('current'); 

Проверяет Li тегов под братьев и сестер родителей. Любой из них должен работать

$(this).siblings().removeClass('current'); 
$(this).parent().find('li').removeClass('current'); 

Но я думаю, что наиболее эффективным решением было бы

$(this).parent().find('li.current').removeClass('current'); 
$(this).addClass('current'); 
Смежные вопросы