ご覧のとおり、私はアニメーションfinish()
にコールバック関数を持っていて、これを再びscrollNext()
と呼びます。
しかし、carousel.is(':animated')
行は、それが繰り返されないようにしています。
アニメーションコールバック関数の最後からscrollNext()
を呼び出しているので、これは当てはまりません。その理由は何ですか?
ご覧のとおり、私はアニメーションfinish()
にコールバック関数を持っていて、これを再びscrollNext()
と呼びます。
しかし、carousel.is(':animated')
行は、それが繰り返されないようにしています。
アニメーションコールバック関数の最後からscrollNext()
を呼び出しているので、これは当てはまりません。その理由は何ですか?
アニメーションセレクタは、「終了」機能が完了するまで削除されません。
しかし、これはありません作品:これは[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
}
はい、それをクリアしていただきありがとうございました – fire
仕上げ機能で私たちはどうにかして:animated property私たち自身を削除することができれば、より洗練された/より良い答えになります。しかし、私は投稿前に行った研究でそれを見つけることができなかった。 * nods * – BananaNeil
return文を削除し、アニメーションの持続時間を増やすだけです。 hereを参照してください。
アニメーションの再生時間をインクリメントする必要はありません.. –
それはより滑らかに見える(私はそれがユーザが達成したいと思うものだと思う)が、しかしあなたは正しくdefenetelyです。 – andreapier
いいえ、その点を残しておきたいです。 – fire
タイミング問題と思われます。試してください:
function finish() {
setTimeout(scrollNext, 100); // adds a 100ms delay
}
(http://bugs.jquery.com/ticket/7157) – Mottie