自動再生のない非常に単純な画像スライダー/スライドショーを作成しようとしています。クリックで次または前の画像に移動したいだけです。以下で読むことができるように、いくつかの問題があります。
これがjsFiddle http://jsfiddle.net/HsEne/12/です(フィドルの画像の代わりに背景色を使用し、imgをdivに切り替えましたが、もちろんまったく同じ問題です)
HTML:
<div id="slider-wrapper">
<div id="slider">
<img class="sp" src="/img1.jpg">
<img class="sp" src="/img2.jpg">
<img class="sp" src="/img3.jpg">
<img class="sp" src="/img4.jpg">
<img class="sp" src="/img5.jpg">
<img class="sp" src="/img6.jpg">
</div>
<img id="button-previous" src="/button-arrow-left.jpg">
<img id="button-next" src="/button-arrow-right.jpg">
</div>
CSS:
#slider-wrapper {
display: block;
max-width: 790px;
margin: 5% auto;
max-height: 500px;
height: 100%; }
#slider {
display: block;
position: relative;
z-index: 99999;
max-width: 710px;
width: 100%;
margin: 0 auto; }
#button-previous {
position: relative;
left: 0;
margin-top: 40%;
width: 40px;
height: 60px; }
#button-next {
position: relative;
margin-top: 40%;
float: right; }
.sp {
position: absolute; }
#slider .sp {
max-width: 710px;
width: 100%;
max-height: 500px; }
次のボタンの jQuery:
jQuery("document").ready(function(){
jQuery("#slider > img:gt(0)").hide();
jQuery("#button-next").click(function() {
jQuery("#slider > img:first")
.fadeOut(1000)
.next()
.fadeIn(1000)
.appendTo("#slider");
});
});
上記の jQuery は正常に動作しますが、ユーザーが最後のスライドで次のボタンをクリックすると最初の画像がスキップされます。最初の画像は一度だけ表示され、他のすべての画像は次がクリックされるたびにスライドし続けます。何らかの理由で display: none が最初の画像に追加されますが、そのコードがどこから来ているのかわかりません。
前のボタンの jQuery:
jQuery("document").ready(function(){
jQuery("#slider > img:gt(0)").hide();
jQuery("#button-previous").click(function() {
jQuery("#slider > img:last")
.fadeOut(1000)
.next()
.fadeIn(1000)
.appendTo("#slider");
});
});
上記のこの jquery コードは、プレビューされたばかりの画像を正常に返します。しかし、もう一度クリックしても何も起こりません。
.next() の代わりに .prev() も試しました。前のボタンを初めてクリックすると、正常に機能します。画像 #4 を見ているとします。前のボタンをクリックすると、画像 #3 に移動します。しかし、もう一度クリックすると、画像 #2 には移動せず、画像 #4 に戻り、次に #3、次に #4 を繰り返します。