2011-07-17 83 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

在這裏你去:

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

你有幾個錯誤:

首先你不應該放在setInterval的字符串。特別是當你只是調用一個函數。由於字符串被eval解析,所以它們很慢。

其次你想從頂部刪除元素,當你將它追加到底部,然後相應地調整滾動位置。

當你已經有DOM元素時,$(「#carousel」)比$(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

好吧,這個想法是,只要它滾動到底部,它就會更加堅持到底,所以它無限滾動。 –

相關問題