jQueryを使用して、対応するサムネイルがクリックされたときに大きな画像を表示/非表示にするクリック可能なサムネイルのdivを含む独自のギャラリーを生成しようとしています。
私はそれを動作させていますが、ギャラリー内の既知の数の画像(この場合は3)のみを使用しています。ギャラリーに30枚の画像がある場合はどうなりますか?以下のコードを30回書き出す必要はありません!
私が本当に欲しいのは、このコードを変更することです。
$('#slideshow-thumbs img.1').click( function() {
$('#main-slideshow img.show').removeClass('show').addClass('hide');
$('#main-slideshow img.1').removeClass('hide');
$('#main-slideshow img.1').addClass('show');
});
$('#slideshow-thumbs img.2').click( function() {
$('#main-slideshow img.show').removeClass('show').addClass('hide');
$('#main-slideshow img.2').removeClass('hide');
$('#main-slideshow img.2').addClass('show');
});
$('#slideshow-thumbs img.3').click( function() {
$('#main-slideshow img.show').removeClass('show').addClass('hide');
$('#main-slideshow img.3').removeClass('hide');
$('#main-slideshow img.3').addClass('show');
});
...このような形式に(nは数値、jはギャラリー内の画像の総数):
for (n=1; n<=j; n++) {
$('#slideshow-thumbs img.n').click( function() {
$('#main-slideshow img.show').removeClass('show').addClass('hide');
$('#main-slideshow img.n').removeClass('hide');
$('#main-slideshow img.n').addClass('show');
});
}
しかし、私はそれに慣れていないので、jQueryでこれを正しく書く方法がわかりません。本当に助けていただければ幸いです!また、スクリプトでj(ギャラリー内の画像の総数)も計算して(私が想定しているhtmlから検出することにより)、スクリプトが任意のサイズの任意のギャラリーで機能するようにします。
助けてくれてありがとう。
関連するHTML:
<div id="main-slideshow">
<img class="1 show" src="images/booklet-open.jpg"/>
<img class="2 hide" src="images/booklets.jpg" />
<img class="3 hide" src="images/poster-1.jpg" />
</div>
<div id="slideshow-thumbs">
<img class="1 active" src="images/booklet-open-thumb.jpg" />
<img class="2 inactive" src="images/booklets-thumb.jpg" />
<img class="3 inactive" src="images/poster-1-thumb.jpg" />
</div>
関連するCSS:
.inactive {
opacity:0.5;
}
.active {
opacity: 1;
}
.hide {
display:none;
}
.show {
display:block;
}