使用に関する Brad M の推奨事項setTimeoutは、必要なものを取得する 1 つの方法です。scrollTop()jQuery が提供する「効果」には含まれていないため、効果のみに影響するdelay()ため、影響を受けません。delay()
ただし、animate()スクロールから効果を出すために使用することは可能です。たとえば、次のようにスクロールをアニメーション化する必要があります。
$scrollable.animate({scrollTop: x});
は「効果」なのでanimate()、 の影響を受けるはずdelay()です。したがって、次のことができます。
$scrollable.delay(3000).animate({scrollTop: x});
ただし、遭遇した別の問題があります。 whenscrollTop(x)が呼び出されるxのは絶対値であり、相対値ではありません。の呼び出しscrollTop(+300)は、 の呼び出しとまったく同じscrollTop(300)です。この+記号は、そのコンテキストでは特別な意味を持ちません。スクロールを相対的にしたい場合は、最初に以前の scrollTop 値を取得し、スクロールする相対距離をそれに追加する必要があります。例えば、
$scrollable.delay(3000).animate({scrollTop: $scrollable.scrollTop() + 300});
このフィドルは、上記の原則を機能させます。