なぜこれが間違っているのですか?
$('#left').click(function(){
var left = 862;
if($('#slider-visible').css('margin-left') == '-2586px'){
}
else{
$('#slider-visible').animate({'margin-left':'-=' + left},500);
}
});
アニメーションキューを停止せず(を使用して.stop()
)、正確な位置を検出するため-=
に使用して使用しようとして==
います....間違っています
正しく構築されたスライダーには、カウンター.stop()
と...
カウンターがあります。
アニメーションは通常、以下に応じて作成されます。
- 要素の数、
- クリック=カウンターを増やす(「前の」ボタンの場合は減らす)
- とのようなアニメーション
left: - counter*oneSlideWidth
- カウンタを0にリセットするこの単純なロジック
counter = counter % numberOfSlides
- さらに、カウンターをに
-1
設定した値よりも(存在しない左スライド)の値に達しているかどうかを確認し、numberOfSlides-1
再度実行します。
$('#slider').stop().animate({left: -counter * slideWidth });
基本的なスライダーロジック:
var galleryWidth = $('#gallery').width(),
counter = 0,
numberOfSlides = $('#gallery .slides').length;
$('#prev, #next').click(function() {
if( this.id=='next'){
counter++;
counter = counter % numberOfSlides ; // will reset to '0' if both match
}else{ // prev was clicked
counter--;
if(counter==-1){
counter = numberOfSlides-1 ;
}
}
$('#slider').stop().animate({left: - counter * galleryWidth }, 700);
});
または単に:
$('#prev, #next').click(function() {
var myId = this.id=='next' ? counter++ : counter-- ;
counter = counter===-1? numberOfslides-1 : counter%numberOfSlides;
$('#slider').stop().animate({left: - counter * galleryWidth }, 700);
});