私は、Jqueryの初心者で、これから始めることになります thisに基づいて、クリック可能なサイクルスライドショーを作成しようとしました。 これまでのところとても良いです。コードは機能します(下記参照)。 私の質問:次回/前回のリンクを使ったシンプルなスライドショー
簡単なコードの記述方法はありませんか?私は前と次のコードを同じように繰り返しています。
次の/ prevリンクをクリックするとアニメーションが開始されます。アニメーション中にもう一度クリックすると、イメージがちらつくかエラーが発生することがあります。 アニメーションを強制的に終了してから、クリックに反応します。
Javascriptを:
$(function() {
$('#prev').click(function() {
var $active = $('#slideshow IMG.active');
var $prev = $active.prev();
$active.addClass('last-active');
if($active.is(":first-child")){$prev = $("IMG:last-child");}
$prev.css({opacity: 0.0})
.addClass('active')
.animate({opacity: 1.0}, 1000, function() {
$active.removeClass('active last-active');
});
});
$('#next').click(function() {
var $active = $('#slideshow IMG.active');
var $next = $active.next();
$active.addClass('last-active');
if($active.is(":last-child")){$next = $("IMG:first-child");}
$next.css({opacity: 0.0})
.addClass('active')
.animate({opacity: 1.0}, 1000, function() {
$active.removeClass('active last-active');
});
});
});
CSS:
#slideshow {position:relative; height:350px; opacity:1.0;}
#slideshow IMG {position:absolute; top:0; left:0; z-index:8; opacity:0.0;}
#slideshow IMG.active {z-index:10; opacity:1.0;}
#slideshow IMG.last-active {z-index:9;}
#next {color:#0000ff; cursor:pointer;}
#prev {color:#0000ff; cursor:pointer;}
HTML:
<div id="slideshow">
<img src="image1.jpg" class="active" />
<img src="image2.jpg" />
<img src="image3.jpg" />
<img src="image4.jpg" />
</div>
<div id="next">NEXT</div>
<div id="prev">PREV</div>
非常にクールです、ありがとう! - console.logはテストするだけのものだと思いますよね? - 私はhttp://api.jquery.com/stop/を読んでいますが、(0,1)がstop()の略であるとは分かりません – Michael
最初に0はアニメーションキューがクリアされていないことを意味しますアニメーションを10回トリガすると、アニメーションは10回(全長)実行されます。したがって、次のボタンを10回高速にクリックすると、すべてのアニメーションが終了するまで待つ必要があります。 2番目の '1'は、再生中のCurentアニメーションを停止することです(Curentアニメーションを実際に終了します)。したがって、次のボタンを10回押すと、最初の9回のアニメーションが即座に実行され、最後のアニメーションのみが表示されます。 .stop(0,1)はこの繰り返しアニメーションの問題を解決する通常の方法です。 – Cristy
キューがクリアされていなくてもstop(0,1)を指定すると、アニメーションの再生中にトリガーボタンをクリックするとアニメーションが終了し、これを実行するだけなのでアニメーションはキューに追加されません。 – Cristy