Добавление класса на текущую вкладку меню

#jquery #css #menu #tabs

#jquery #css — код #меню #вкладки

Вопрос:

Я использую следующее для переключения между 3 различными разделами..

Посмотрите рабочую демонстрацию.

Я отклеился, пытаясь найти способ применить другой цвет фона к текущей выбранной вкладке меню (включая вкладку по умолчанию, с которой загружается страница — «Еженедельно»)

Невозможно добавить класс к классу, не так ли?

Есть какие-нибудь идеи, как я мог бы сделать это с помощью jQuery?

Вот мой код…

jQuery ( jQuery ) :

  jQuery('.viewSchedule').click(function () {
    var index = $(this).index(),
    newTarget = jQuery('.targetSched').eq(index);
    console.log(index newTarget)
    jQuery('.targetSched').not(newTarget).fadeOut('fast')
    newTarget.delay('fast').fadeIn('fast')
    return false;
})
 

CSS :

  .viewSchedule {}
 .viewBTN {display:block;width:auto;height:auto;padding:5px 10px 5px 10px;background:#ccc;color:#242424;cursor:pointer;border-radius:5px;float:left;margin-left:10px;font-family:dina,Arial, Helvetica, sans-serif;font-size:16px;text-align:center;}
 .viewBTN:hover {background:#FFF;color:#333;}


 .targetSched {display: none}
 .targetSched.first {display: block}
 

HTML :

  <a class="viewSchedule" target="1"><span class="viewBTN">WEEKLY</span></a>
 <a class="viewSchedule" target="2"><span class="viewBTN">DAILY</span></a>
 <a class="viewSchedule" target="3"><span class="viewBTN">LIST</span></a>

 <br /><br /><br /><br />

 <div id="sh-week" class="targetSched first">WEEKLY CONTENT</div>
 <div id="sh-daily" class="targetSched">DAILY CONTENT</div>
 <div id="sh-list" class="targetSched">LIST CONTENT</div>
 

Ответ №1:

JSFiddle

jQuery:

 jQuery('.viewSchedule').click(function () {
    $('.viewBTN').removeClass('selected');
    $(this).find('.viewBTN').addClass('selected');

    var index = $(this).index(),
    newTarget = jQuery('.targetSched').eq(index);
    jQuery('.targetSched').not(newTarget).fadeOut('fast')
    newTarget.delay('fast').fadeIn('fast')        
    return false;
})
 

CSS:

 .selected {background: blue}
 

Комментарии:

1. речь идет не о том, кто прав или неправ, а просто о том, что является решением. 1 за вашу попытку, спасибо

Ответ №2:

Вы можете добавить несколько классов к одному элементу .

ДЕМОНСТРАЦИЯ

JavaScript

 jQuery('.viewSchedule').click(function () {
        var index = $(this).index(),
        newTarget = jQuery('.targetSched').eq(index);

    $(".viewSchedule.active").removeClass("active");
     $(this).addClass("active");
    console.log(index newTarget)
        jQuery('.targetSched').not(newTarget).fadeOut('fast')
        newTarget.delay('fast').fadeIn('fast')
        return false;
    })
 

CSS

 .viewSchedule {}
.viewBTN {display:block;width:auto;height:auto;padding:5px 10px 5px 10px;background:#ccc;color:#242424;cursor:pointer;border-radius:5px;float:left;margin-left:10px;font-family:dina,Arial, Helvetica, sans-serif;font-size:16px;text-align:center;}
.viewBTN:hover {background:#FFF;color:#333;}


.viewSchedule.active .viewBTN{
    background-color:red;
    color:white;
}
.targetSched {display: none}
.targetSched.first {display: block}
 

Комментарии:

1. Это будет неверно. $(this).addClass("active"); добавит класс к ссылке, а не к кнопке. Смотрите мой ответ.

2. цель состоит в том, чтобы выделить активную кнопку

3. Точно, и чтобы переопределить стиль кнопки, который вам нужно установить, добавьте класс в .viewBTN диапазон.

4. О, хорошо. Моя ошибка. Что ж, спрашивающий может выбрать любой ответ, который подходит ему лучше всего. Хорошего дня.

5. мы оба правы, в программировании есть много способов сделать одно и то же