2016-12-19 10 views
2
'use strict'; 
$(function() { 
    var currentSlide = 1; 

    //DOM cache 
    var $slider = $('#slider'); 
    var $slidesContainer = $slider.find('#container'); 
    var $slides = $slidesContainer.find("li") 
    console.log($slides.length); 


    //slider 
    setInterval(slide, 3000); 

    function slide() { 
     $slidesContainer.animate({'margin-left': '-='+400}, 800); 
     console.log(currentSlide); 
     currentSlide++; 
     if (currentSlide === $slides.length) { 
      currentSlide = 1; 
      $slidesContainer.css("margin-left", 0);// <------PROBLEM HERE 
     }//end if   
    }//end slide 
});//end js 

このスライダはほぼ良好ですが、このメソッドの.css()が機能しない理由はわかりません。変数currentSlideが4に等しいときに1になるため($ slides.length)、動作しています。スライダの.css()メソッドが動作していません

すべての回答ありがとうございます。

+0

ブラウザコンソールにエラーはありませんか? – Sojtin

+0

解決策は(Satpal)の回答です。私はちょうど.animate()のコールバック関数について忘れました – Memes

+0

正しい答えとして彼の答えを受け入れてください、それは彼にポイントを与えて、このサイトを実行し続けます。 – SeanKendle

答えて

4

アニメーションが完了するのを待つ必要があります。そのコールバックメソッドを使用してください。

$slidesContainer.animate({ 
    'margin-left': '-=' + 400 
}, 800, function() { 
    // Animation complete. 
    currentSlide++; 
    if (currentSlide === $slides.length) { 
     currentSlide = 1; 
     $slidesContainer.css("margin-left", 0); 
    } 
}); 
関連する問題