Менеджер вкладок (Осторожно г*внокод)

319
08 сентября 2017, 20:02

Здравствуйте!

Насколько костыльно я сделал менеджер вкладок?

Хотелось бы услышать какие-то комментарии и желательно советы по улучшению, только учусь JavaScript'у.

Разметку и верстку прикладываю.

Верстка: http://smart-kids-shop.ru/dd/

HTML:

            <div class="col-md-12">
                    <ul>
                        <li><a class="denis">ДЕНИС</a></li>
                        <li><a class="anya">АНЯ</a></li>
                        <li><a class="artem">АРТЕМ</a></li>
                        <li><a class="yulia">ЮЛЯ</a></li>
                    </ul>
                </div>
            </div>
        <div id="denis">
            <div class="col-md-6">
                <h2>Персональный тренер - Денис</h2>
                <hr align="left">
                <p>« Регулярные тренировки и правильное питание -
                    залог здоровья и красоты! ЕМS-тренировки - это
                    инновация в сфере фитнеса. Отличное решение для создания
                    фигуры мечты и укрепления здоровья.
                    Моя цель - привести клиента к желаемому результату »</p>
            </div>
            <div class="col-md-6">
                <img class="trainer" src="img/denis.png" alt="">
            </div>
        </div>
        <div id="anya">
            <div class="col-md-6">
                <h2>Персональный тренер - Аня</h2>
                <hr align="left">
                <p> Тренер Аня <br> Таким образом дальнейшее развитие
                    различных форм деятельности в значительной степени
                    обуславливает создание существенных финансовых и
                    административных условий. Повседневная практика показывает,
                    что сложившаяся структура организации способствует подготовки и
                    реализации форм развития. Таким образом рамки и место обучения
                    кадров влечет за собой процесс внедрения и модернизации систем массового участия.</p>
            </div>
            <div class="col-md-6">
                <img class="trainer" src="img/denis.png" alt="">
            </div>
        </div>
    <div id="artem">
        <div class="col-md-6">
            <h2>Персональный тренер - Артем</h2>
            <hr align="left">
            <p> Тренер Артем <br> Таким образом дальнейшее развитие
                различных форм деятельности в значительной степени
                обуславливает создание существенных финансовых и
                административных условий. Повседневная практика показывает,
                что сложившаяся структура организации способствует подготовки и
                реализации форм развития. Таким образом рамки и место обучения
                кадров влечет за собой процесс внедрения и модернизации систем массового участия.</p>
        </div>
        <div class="col-md-6">
            <img class="trainer" src="img/denis.png" alt="">
        </div>
    </div>
    <div id="yulia">
        <div class="col-md-6">
            <h2>Персональный тренер - Юля</h2>
            <hr align="left">
            <p> Тренер Юля <br> Таким образом дальнейшее развитие
                различных форм деятельности в значительной степени
                обуславливает создание существенных финансовых и
                административных условий. Повседневная практика показывает,
                что сложившаяся структура организации способствует подготовки и
                реализации форм развития. Таким образом рамки и место обучения
                кадров влечет за собой процесс внедрения и модернизации систем массового участия.</p>
        </div>
        <div class="col-md-6">
            <img class="trainer" src="img/denis.png" alt="">
        </div>
    </div>

JS:

$( document ).ready(function () {
    $('a.denis').addClass( "active" );
    $('#anya').hide();
    $('#artem').hide();
    $('#yulia').hide();
})
$('a.anya').click(function () {
    $('#denis').hide();
    $('#yulia').hide();
    $('#artem').hide();
    $('a.denis').removeClass( "active" );
    $('a.yulia').removeClass( "active" );
    $('a.artem').removeClass( "active" );
    $('a.anya').addClass( "active" );
    $('#anya').show();
})
$('a.denis').click(function () {
    $('#anya').hide();
    $('#yulia').hide();
    $('#artem').hide();
    $('a.anya').removeClass( "active" );
    $('a.yulia').removeClass( "active" );
    $('a.artem').removeClass( "active" );
    $('a.denis').addClass( "active" );
    $('#denis').show();
})
$('a.artem').click(function () {
    $('#anya').hide();
    $('#yulia').hide();
    $('#denis').hide();
    $('a.anya').removeClass( "active" );
    $('a.yulia').removeClass( "active" );
    $('a.denis').removeClass( "active" );
    $('a.artem').addClass( "active" );
    $('#artem').show();
})
$('a.yulia').click(function () {
    $('#anya').hide();
    $('#artem').hide();
    $('#denis').hide();
    $('a.anya').removeClass( "active" );
    $('a.artem').removeClass( "active" );
    $('a.denis').removeClass( "active" );
    $('a.yulia').addClass( "active" );
    $('#yulia').show();
})

Внимание на этот блок:

Answer 1

Одна из ваших задач как разработчика, писать код, который в том числе можно использовать повторно и уницифировать. Очень наглядная задача в этом смысле - реализация калькулятора. Вы же не будете для нажатия каждой кнопки писать свой обработчик? Следует написать один, но универсальный, так как действие - типовое.

Покуда вам не требуется создавать анимации при запуске страницы - выставляйте классы для отображения/скрытия элементов изначально при построении html на стороне сервера. Нет смысла делать то же самое в скрипте при старте.

Как вам уже написали в комментариях, все что вы пытались реализовать уже есть в стандартном бутстрапе. Но, если оставить его в стороне, то ваше решение для скрытия блоков при нажатии на ссылки должно иметь следующий вид. В таком варианте оно достаточно кратко и расширяемо при добавлении новых вкладок.

$(".person-tabs a.tab").click(function(e){ 
   e.preventDefault(); 
   $(".person-tabs a, .person-info").removeClass("active"); 
   $(this).addClass('active');   
       
   $(".person-info#"+$(this).data('info-id')).addClass("active"); 
});
.person-info { display: none; } 
.person-info.active { display: block; } 
a.tab.active { font-weight: bold; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<div class="col-md-12"> 
    <ul class="person-tabs"> 
        <li><a class="tab active" data-info-id="denis">ДЕНИС</a></li> 
        <li><a class="tab" data-info-id="anya">АНЯ</a></li> 
        <li><a class="tab" data-info-id="artem">АРТЕМ</a></li> 
        <li><a class="tab" data-info-id="yulia">ЮЛЯ</a></li> 
    </ul> 
</div> 
<div id="content"> 
    <div id="denis" class="person-info active"> 
        <div class="col-md-6"> 
            <h2>Персональный тренер - Денис</h2> 
            <hr align="left"> 
            <p>« Регулярные тренировки и правильное питание - 
                залог здоровья и красоты! ЕМS-тренировки - это 
                инновация в сфере фитнеса. Отличное решение для создания 
                фигуры мечты и укрепления здоровья. 
                Моя цель - привести клиента к желаемому результату »</p> 
        </div> 
        <div class="col-md-6"> 
            <img class="trainer" src="img/denis.png" alt=""> 
        </div> 
    </div> 
 
      <div id="anya" class="person-info"> 
          <div class="col-md-6"> 
              <h2>Персональный тренер - Аня</h2> 
              <hr align="left"> 
              <p> Тренер Аня <br> Таким образом дальнейшее развитие 
                  различных форм деятельности в значительной степени 
                  обуславливает создание существенных финансовых и 
                  административных условий. Повседневная практика показывает, 
                  что сложившаяся структура организации способствует подготовки и 
                  реализации форм развития. Таким образом рамки и место обучения 
                  кадров влечет за собой процесс внедрения и модернизации систем массового участия.</p> 
          </div> 
          <div class="col-md-6"> 
              <img class="trainer" src="img/denis.png" alt=""> 
          </div> 
      </div> 
 
  <div id="artem" class="person-info"> 
      <div class="col-md-6"> 
          <h2>Персональный тренер - Артем</h2> 
          <hr align="left"> 
          <p> Тренер Артем <br> Таким образом дальнейшее развитие 
              различных форм деятельности в значительной степени 
              обуславливает создание существенных финансовых и 
              административных условий. Повседневная практика показывает, 
              что сложившаяся структура организации способствует подготовки и 
              реализации форм развития. Таким образом рамки и место обучения 
              кадров влечет за собой процесс внедрения и модернизации систем массового участия.</p> 
      </div> 
      <div class="col-md-6"> 
          <img class="trainer" src="img/denis.png" alt=""> 
      </div> 
  </div> 
 
  <div id="yulia" class="person-info"> 
      <div class="col-md-6"> 
          <h2>Персональный тренер - Юля</h2> 
          <hr align="left"> 
          <p> Тренер Юля <br> Таким образом дальнейшее развитие 
              различных форм деятельности в значительной степени 
              обуславливает создание существенных финансовых и 
              административных условий. Повседневная практика показывает, 
              что сложившаяся структура организации способствует подготовки и 
              реализации форм развития. Таким образом рамки и место обучения 
              кадров влечет за собой процесс внедрения и модернизации систем массового участия.</p> 
      </div> 
      <div class="col-md-6"> 
          <img class="trainer" src="img/denis.png" alt=""> 
      </div> 
  </div> 
 </div>

READ ALSO
прижать Footer к низу страницы [дубликат]

прижать Footer к низу страницы [дубликат]

На данный вопрос уже ответили:

373
Ограниченные символы в input при вводе

Ограниченные символы в input при вводе

Добрый День! Столкнулся с проблемой ограничения на ввод символов в поле input для номера телефонаИмею скрипт, который позволяет ввести только...

390
Почему Owl Carousel не подключается?

Почему Owl Carousel не подключается?

Почему Owl Carousel не работает?

306
Пишет ошибку. Вроде все правильно : [требует правки]

Пишет ошибку. Вроде все правильно : [требует правки]

Пишет ошибкуВроде все правильно : /

260