私は、非常に単純なギャラリーとして、最初の自作の jQuery スクリプトを作成しようとしています。
CSS:
#gallery li{
display:none;
}
#gallery li.current {
display: block;
}
HTML:
<div id="gallery">
<li class="current"><img src="img/1.jpg" /></li>
<li><img src="img/2.jpg" /></li>
<li><img src="img/3.jpg" /></li>
<li><img src="img/4.jpg" /></li>
</div>
<div id="controls">
<span id="left"><</span>
<span id="right">></span>
</div>
Jクエリ:
$(function(){
$('#controls #left').click(function(){
var old = $('li.current');
$('li.current').removeClass('current');
if (old = $('#gallery:first-child')){
$('#gallery:last-child').addClass('current');
}else{
$(old).prev('li').addClass('current');
}
});
$('#controls #right').click(function(){
var old = $('li.current');
if (old = $('#gallery:last-child')){
$('#gallery:first-child').addClass('current');
}else{
$('li.current').removeClass('current');
$(old).next('li').addClass('current');
}
});
});
最初/最後のギャラリー画像を見ているかどうかを確認するために if/else ステートメントを追加するまではうまくいきました。ギャラリーがループするように、このステートメントが必要です。なぜそれが機能しないのか理解できず、デバッグしても何も得られません。
正しい方向に少しプッシュできますか?
編集:以下のいくつかの提案を使用して、ここに私がいるところです:
$(function(){
$('#left').click(function(){
var old = $('li.current');
old.removeClass('current');
if (old == $('#gallery li:first-child')){
$('#gallery li:last-child').addClass('current');
}else{
old.prev('li').addClass('current');
}
});
$('#right').click(function(){
var old = $('li.current');
old.removeClass('current');
if (old == $('#gallery li:last-child')){
$('#gallery li:first-child').addClass('current');
}else{
old.next('li').addClass('current');
}
});
});
ただし、まだループしていません(最初の画像で「左」を押すとギャラリーが空白になり、最後の画像で「右」を押すと同様です)