我只需要知道在我的導航菜單上是否有更有效的編寫轉換效果代碼塊的方法。如果你想知道爲什麼我不單獨應用每個類,它就使用ajax過渡。更高效的導航效果
這裏的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。我敢肯定,我只是有一個愚蠢的時刻。謝謝!
編輯:我構建代碼的方式不同,它處理面板開關的方式,這部分代碼只是設計用於處理Nav轉換。
所以基本上,我刪除了每個IF
語句的底部,因此它只處理導航轉換。
類似portfolioActive,aboutActive等是一樣的嗎? – 2012-03-07 20:30:51
你不需要'$ this'變量,因爲你唯一使用它的地方是檢查'$ this.attr('id')',並且可以用更高效的'this.id '。 – nnnnnn 2012-03-07 20:36:10
你可以一次完成所有'removeClass'調用,然後只做一個有條件的'addClass',但這只是使代碼更小,更易於閱讀。運行時不會提高效率。如果if/else語句也是一個switch語句比很多的語句更容易閱讀。 – Archer 2012-03-07 20:45:59