我在下面有以下代码用于幻灯片放映。我想优化此代码,并希望与 SO 联系以尝试获得一些帮助。我知道我正在使用的这些选择器正在工作,但我很好奇是否有更有效的方式来编写我的画廊。我经常写这些相同的情况,并想知道其他人是否觉得我做得对。
我只是在寻找有关格式的总体建议,以及我的 JS 性能优化以及 DRY 代码方法。看看其他人如何编写类似的代码有助于我磨练自己的技能。
标记
<a id="next">next</a><a id="prev">prev</a>
<ul id="thumbnails">
<li><a href="/path/to/src"><img src="50x50.jpg"></a></li>
<li><a href="/path/to/src"><img src="50x50.jpg"></a></li>
<li><a href="/path/to/src"><img src="50x50.jpg"></a></li>
</ul>
<img id="main-image" src="path/to/src">
JS
$("#thumbnails a").click(function(e){
e.preventDefault();
var $this = $(this),
thesrc = $this.attr('href'),
desc = $this.attr('alt');
$this.addClass('current');
$this.parent().siblings().children('a').removeClass('current');
$("#main-image").fadeOut(400, function(){
$('<img/>').attr('src', thesrc).load(function(){
$("#main-image").attr('src', this.src).fadeIn(400);
$("#caption").text(desc);
});
});
});
$("#next").click(function(e){
e.preventDefault();
$('.current').parent().next().children('a').trigger('click');
});
$("#prev").click(function(e){
e.preventDefault();
$('.current').parent().prev().children('a').trigger('click');
});