使用に関する 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});
このフィドルは、上記の原則を機能させます。