Мне просто нужно знать, есть ли более эффективный способ записи этого блока кода для эффектов перехода в меню навигации. Он использует переходы ajax, если вам интересно, почему я не просто применяю каждый класс отдельно.Более эффективные Nav Effects
вот Javascript код:
var navA = $('#nav a'),
aboutBtn = $('#aboutBtn'),
portfolioBtn = $('#portfolioBtn'),
resumeBtn = $('#resumeBtn'),
photoBtn = $('#photoBtn');
navA.on('click', function(e) {
var $this = $(this);
e.preventDefault();
// if the resumeBtn is clicked
if ($this.attr('id') == 'resumeBtn') {
// Portfolio
portfolioBtn.removeClass('portfolioActive');
portfolioBtn.addClass('portfolio');
//About Me
aboutBtn.removeClass('aboutActive');
aboutBtn.addClass('about');
// Photo
photoBtn.removeClass('photoActive');
photoBtn.addClass('photo');
// Resume
resumeBtn.removeClass('resume');
resumeBtn.addClass('resumeActive');
}
// If portfolioBtn Is Clicked
else if ($this.attr('id') == 'portfolioBtn') {
// About
aboutBtn.removeClass('aboutActive');
aboutBtn.addClass('about');
// Resmue
resumeBtn.removeClass('resumeActive');
resumeBtn.addClass('resume');
// Photo
photoBtn.removeClass('photoActive');
photoBtn.addClass('photo');
// Portfolio
portfolioBtn.removeClass('portfolio');
portfolioBtn.addClass('portfolioActive');
}
// If photoBtn Is Clicked
else if($this.attr('id') == 'photoBtn') {
// About
aboutBtn.removeClass('aboutActive');
aboutBtn.addClass('about');
// Portfolio
portfolioBtn.removeClass('portfolioActive');
portfolioBtn.addClass('portfolio');
// Resume
resumeBtn.removeClass('resumeActive');
resumeBtn.addClass('resume');
// Photo
photoBtn.removeClass('photo');
photoBtn.addClass('photoActive');
}
// If aboutBtn is clicked
else if ($this.attr('id') == 'aboutBtn') {
// Portfolio
portfolioBtn.removeClass('portfolioActive');
portfolioBtn.addClass('portfolio');
// About Me
aboutBtn.removeClass('about');
aboutBtn.addClass('aboutActive');
// Resume
resumeBtn.removeClass('resumeActive');
resumeBtn.addClass('resume');
// Photo
photoBtn.removeClass('photoActive');
photoBtn.addClass('photo');
};
});
Html:
<div id="nav">
<a class="resume" href="resume.html" id="resumeBtn">Resume</a>
<a class="portfolio" href="portfolio.html" id="portfolioBtn">Portfolio</a>
<a class="photo" href="photos2.html" id="photoBtn">Photos</a>
<a class="aboutActive" href="index.html" id="aboutBtn">About Me</a>
</div>
Классы CSS использует изображения для переходов, но так или иначе. Я просто хочу знать, есть ли более эффективный способ написать мой jQuery. Я уверен, что у меня просто есть глупый момент. Благодаря!
EDIT: Я структурирую код по-разному в том, как он обрабатывает коммутаторы панели, и этот раздел кода предназначен только для обработки переходов Nav.
По сути, я удалил нижнюю часть каждого IF
, поэтому он обрабатывает только навигационные переходы.
Являются ли классы похожими на портфолиоActive, aboutActive и т. д. то же самое? –
Вам не нужна переменная '$ this', потому что единственное, что вы использовали для нее, это проверить' $ this.attr ('id') 'и заменить ее более эффективным' this.id '. – nnnnnn
Вы можете сделать все вызовы 'removeClass' за один раз, а затем сделать только условный' addClass', но это просто делает код меньше и легче читать. Не повысит эффективность во время выполнения. Кроме того, оператор switch будет легче читать, чем много, если if/if else. – Archer