如何在将元素附加到div后更新scrollHeight?

时间:2011-07-17 17:30:23

标签: javascript jquery dom

我有一个包含多个图像的div,隐藏了溢出,慢慢向下滚动。我想,当滚动到达底部时,克隆第一个元素并将其附加到底部,因此它将继续滚动。

到目前为止,我已经完成了所有这些,除了它不会保持滚动,因为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 );
}
}

2 个答案:

答案 0 :(得分:1)

你走了:

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

你有一些错误:

首先,你不应该在setInterval中放一个字符串。特别是当你只是在调用一个函数时。由于字符串由eval解析,因此它们非常慢。

其次,当您将元素附加到底部时,您希望从顶部删除元素,然后相应地调整滚动位置。

当你已经拥有DOM元素时,$(“#carousel”)也比$(carousel)慢得多。

答案 1 :(得分:0)

只是一个想法,如果你可以静静地将第一个孩子放在旋转木马的末尾,你可以避免克隆,从而避免问题。

希望这会有所帮助。 问候。