2012-01-18 11 views
4

後もアニメ化されます。jQueryのは、しかし、私はそれが継続的に沿ってスクロールしておきたい、あなたはそれが次の項目にスクロールしますスタートボタンをクリックすると、私は<a href="http://jsfiddle.net/v53Fm/" rel="nofollow">http://jsfiddle.net/v53Fm/</a></p> <p>で基本的なカルーセルを持つコールバック

ご覧のとおり、私はアニメーションfinish()にコールバック関数を持っていて、これを再びscrollNext()と呼びます。

しかし、carousel.is(':animated')行は、それが繰り返されないようにしています。

アニメーションコールバック関数の最後からscrollNext()を呼び出しているので、これは当てはまりません。その理由は何ですか?

+0

(http://bugs.jquery.com/ticket/7157) – Mottie

答えて

3

アニメーションセレクタは、「終了」機能が完了するまで削除されません。

しかし、これはありません作品:これは[jQueryの1.8で修正された]しなければならない

function scrollNext() { 
    var carousel = $('ul'); 
    if (carousel.is(':animated')) return false; 
    carousel.animate({ left: '-=180px' }, 400, finish); 
} 

function finish() { 
    setTimeout(scrollNext,1); //runs the function one millisecond after the finish() method is called 
} 
+0

はい、それをクリアしていただきありがとうございました – fire

+0

仕上げ機能で私たちはどうにかして:animated property私たち自身を削除することができれば、より洗練された/より良い答えになります。しかし、私は投稿前に行った研究でそれを見つけることができなかった。 * nods * – BananaNeil

0

return文を削除し、アニメーションの持続時間を増やすだけです。 hereを参照してください。

+0

アニメーションの再生時間をインクリメントする必要はありません.. –

+0

それはより滑らかに見える(私はそれがユーザが達成したいと思うものだと思う)が、しかしあなたは正しくdefenetelyです。 – andreapier

+0

いいえ、その点を残しておきたいです。 – fire

2

タイミング問題と思われます。試してください:

function finish() { 
    setTimeout(scrollNext, 100); // adds a 100ms delay 
} 
関連する問題

 関連する問題