Здравствуйте!
Насколько костыльно я сделал менеджер вкладок?
Хотелось бы услышать какие-то комментарии и желательно советы по улучшению, только учусь 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();
})
Внимание на этот блок:
Одна из ваших задач как разработчика, писать код, который в том числе можно использовать повторно и уницифировать. Очень наглядная задача в этом смысле - реализация калькулятора. Вы же не будете для нажатия каждой кнопки писать свой обработчик? Следует написать один, но универсальный, так как действие - типовое.
Покуда вам не требуется создавать анимации при запуске страницы - выставляйте классы для отображения/скрытия элементов изначально при построении 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>
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости