progateのjQuery上級編をアレンジしてスライドショーをつくっています。
nextボタンで次の画像、prevボタンで前の画像に行けるようになっています。
##実現したいこと
nextボタンで最後まで行ったときに最初の画像に、prevボタンで最初まで行ったときに最後の画像に行くようにしたいです。
##やったこと
自分なりに考えてコードを書いたのですが、思うように動きません。
ちなみに、画像は基本、display:noneで非表示にし、activeクラスが付いたときにdisplay:blockで表示されるようになっています。
html
1 <ul class="images"> 2 <li class="slide-image active"><img src="img/mainvisual.png" alt=""></li> 3 <li class="slide-image"><img src="img/sky.jpg" alt=""></li> 4 <li class="slide-image"><img src="img/beach.jpg" alt=""></li> 5 <li class="slide-image"><img src="img/mainvisual.png" alt=""></li> 6 <li class="slide-image"><img src="img/sky.jpg" alt=""></li> 7 </ul> 8 9 <!-- ボタン --> 10<img src="img/arrow-prev.svg" alt="" class="change prev-btn"> 11<img src="img/arrow-next.svg" alt="" class="change next-btn"> 12
css
1.slide-image { 2 display: none; 3} 4.active { 5 display: block; 6 }
jQuery
1window.addEventListener('DOMContentLoaded', function() { 2 $('.change').click(function() { 3 var $displaySlide = $('.active'); 4 var $slideIndex = $('.slide-image').index('.active'); 5 $displaySlide.removeClass('active'); 6 if($(this).hasClass('next-btn')) { 7 $displaySlide.next().addClass('active'); 8 } else if ($slideIndex == $('.images').eq(length)){ 9 $('images').eq(0).addClass('active'); 10 } else if ($slideIndex == $('.images').eq(0)){ 11 $('images').eq(length).addClass('active'); 12 } else { 13 $displaySlide.prev().addClass('active'); 14 15 } 16 17 18 }); 19 });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/30 08:28