我只需要知道在我的导航菜单上是否有更有效的编写转换效果代码块的方法。如果你想知道为什么我不单独应用每个类,它就使用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