スライドショーに使用している以下のコードがあります。このコードを最適化したいので、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');
});