0

次のことがうまくいかない理由を誰かに説明してもらえますか?これは同じクリックイベントで発生しますが、CSS関数は直後ではないため、可能であれば、animate関数でコールバックを使用したくありません。

注:アニメーションは起動しますが、cssは起動しません。

            container.animate({
                left : (posLeft + slideWidth),
            });


                container.css({
                left : '-'+(itemsLength + startX)+'px',
            }); 
4

1 に答える 1

5

.animateつまり、 (視覚的に) 完了した.css後に呼び出されるという保証はまったくありません。.animateしたがって、あなたの場合、.animate呼び出された後、.cssすぐに呼び出されますが、そのleft位置は.animate内部で呼び出すことによってすぐに上書きされますsetInterval

docsによると、2番目の引数はオプションを定義するオブジェクトである可能性があり、そのうちの1つはcomplete

指定した場合、アニメーションが完了すると、完全なコールバック関数が起動されます。これは、異なるアニメーションを順番に並べるのに役立ちます。コールバックには引数は送信されませんが、アニメーション化される DOM 要素に設定されます。複数の要素がアニメーション化されている場合、コールバックは、アニメーション全体に対して 1 回ではなく、一致した要素ごとに 1 回実行されます。

container.animate({
   left : (posLeft + slideWidth),
}, {
   complete: function() {
      $(this).css({ // as per doc, this is the DOM element being animated
         left : '-'+(itemsLength + startX)+'px',
      }); 
   })
});
于 2012-08-15T08:29:29.000 に答える