2013-12-19 3 views
1

Я использую следующие для переключения несколько ссылок на странице с соответствующими даннымиКак изменить стиль активного переключателя при использовании jquery toggle?

<div class="buttons"> 
    <a class="show" target="1">Option 1</a> 
    <a class="show" target="2">Option 2</a> 
    <a class="show" target="3">Option 3</a> 
    <a class="show" target="4">Option 4</a> 
</div> 

<div id="div1" class="targetDiv">Lorum Ipsum 1</div> 
<div id="div2" class="targetDiv">Lorum Ipsum 2</div> 
<div id="div3" class="targetDiv">Lorum Ipsum 3</div> 
<div id="div4" class="targetDiv">Lorum Ipsum 4</div> 

JS:

$('.targetDiv').hide(); 
$('.show').click(function() { 
    $('#div' + $(this).attr('target')).toggle('').siblings('.targetDiv').hide(''); 
}); 

Который работает для того, что я хочу просто хорошо, но то, что я хотел бы знать, если можно изменить стиль ссылки, когда каждый из них активен. Поэтому пользователь знает, что просматривает содержимое этой ссылки. Поэтому, если текущий класс show является фоном: # 000; например, могу ли я изменить его на фон: #fff; как-то, когда отображается эта опция DIV? Тогда вернемся к норме, когда это не так?

JSfiddle текущих настроек http://jsfiddle.net/W3HtS/1/

ответ

1

Попробуйте так: Working Fiddle

$('.show').not(this).removeClass('active'); 
     if($(this).hasClass('active')){ 
     $(this).removeClass('active'); 
     }else{ 
     $(this).addClass('active'); 
     } 
    }); 
+0

Спасибо за это решение, но, пожалуйста, см. Ответы на другое решение, у этого есть такая же небольшая проблема. :) –

+0

попробуйте сейчас обновить код –

+0

Спасибо, не похоже, что новый код работает вообще? Можете ли вы опубликовать обновленный jsfiddle, чтобы увидеть, что я делаю неправильно? –

3

Добавить активное имя класса на функции мыши

$('.show').removeClass('active'); 
     $(this).addClass('active'); 

DEMO

+0

Спасибо, это работает с одной небольшой проблемой. Если вы снова закроете активную кнопку с той же кнопкой, активный класс останется. Только если вы откроете одну из других, она исчезнет. Есть ли способ исправить это, поэтому он возвращается в нормальное состояние, если вы открываете/закрываете тот же div? –

0

Попробуйте

$('.targetDiv').hide(); 

    $('.show').click(function() { 
      $(".show").removeClass("highlight"); 
     $(this).addClass("highlight"); 
     $('#div' + $(this).attr('target')).toggle('').siblings('.targetDiv').hide(''); 
     }); 

определяют стиль, что у НУ хотите применить в выделить класса

+0

Спасибо, это также работает, но снова имеет ту же проблему, что и другие решения. Если вы снова закроете активную кнопку с той же кнопкой, класс подсветки останется. Только если вы откроете одну из других, она исчезнет. Я бы предпочел, чтобы стиль мог вернуться к умолчанию, когда он закрыт с помощью одной и той же кнопки. –

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