2011-07-17 8 views
0

私はいくつかの画像を含むdivを持っています。オーバーフローは隠され、ゆっくりと下にスクロールします。スクロールバーが下に来ると、最初の要素をクローンして下に追加して、スクロールを続けます。divに要素を追加した後にscrollHeightを更新するにはどうすればよいですか?

これまでのところ、scrollHeightプロパティが元の値であるため、スクロールを保持しない点を除いて、これまでのところこれまですべてを達成しました。 divのscrollHeight値を更新する方法はありますか?これまで

マイスクリプト:

$(document).ready(function() { 
$("#carousel").scrollTop(0); 
intervalID = setInterval("scrollCarousel()",50); 

carousel = document.getElementById("carousel"); 
}); 

function scrollCarousel() { 


if ($("#carousel").scrollTop() > $("#carousel:first").height() || 
     $("#carousel").scrollTop() + carousel.offsetHeight > 
     carousel.scrollHeight) { 

    elem = $("#carousel").children(':first-child').clone(); 
    console.debug(elem); 
    elem.appendTo($("#carousel")); 
    carousel.scrollHeight += elem.height; 
} 
else { 
    $("#carousel").scrollTop($("#carousel").scrollTop() + 1); 
} 
} 

答えて

0

あなたが行く:すべての

まずあなたがたsetIntervalに文字列を入れないでください。

http://jsfiddle.net/Paulpro/bPrY7/

あなたはいくつかミスをしていました。特に関数を呼び出すだけの場合。文字列はevalによって解析されるので、かなり遅いです。

第2に、要素を下部に追加するときに上部から要素を削除し、それに応じてスクロール位置を調整します。

また、既にDOM要素がある場合、$( "#carousel")は$(カルーセル)よりもかなり遅いです。

+0

ヒントをありがとう!残念ながら、scrollHeightの最後まで来ると、最初の子を最後まで移動し始めますが、スクロールの位置は同じなのでスクロールせずにそのまま続けます。 –

+0

ああ、画像を移動した後にscrollTopを0に設定するのを忘れてしまった。問題が解決しました! –

+0

@Zack Michener興味があれば、jQueryを使わずにそれを作り直しています。 オリジナルはこちらhttp://jsfiddle.net/Paulpro/bPrY7/16/ jQueryを必要としない新しいものはこちらです:http://jsfiddle.net/Paulpro/bPrY7/ – Paulpro

0

ちょうどアイデア、あなたは静的カルーセルの終わりに最初の子を置くことができるならば、あなたはクローン、したがって、問題を回避することができます。

これが役に立ちます。よろしくです。 よろしくお願いします。ここで

+0

考え方は、底にスクロールするときはいつでも最後まで押しつけるので、無限にスクロールします。 –

関連する問題