Как можно обновить scrollHeight после добавления элементов в div? - PullRequest
0 голосов
/ 17 июля 2011

У меня есть div, содержащий несколько изображений со скрытым переполнением, которое медленно прокручивается вниз.Я хотел бы, когда свиток дойдет до дна, клонировать первый элемент и добавить его к дну, чтобы он продолжил прокрутку.прокрутка, потому что свойство scrollHeight по-прежнему является исходным значением.Есть ли способ обновить значение scrollHeight для div?

Мой сценарий:

$(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 ]

1 голос
/ 17 июля 2011

Вот, пожалуйста:

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

У вас было несколько ошибок:

Прежде всего, вам не следует помещать строку в setInterval. Особенно, когда вы просто вызываете функцию. Поскольку строки обрабатываются eval, они работают довольно медленно.

Во-вторых, вы хотите удалить элемент сверху, когда добавляете его к нижней части, а затем просто соответствующим образом отрегулируйте положение прокрутки.

Также $ ("# carousel") намного медленнее, чем $ (carousel), когда у вас уже есть элемент DOM.

0 голосов
/ 17 июля 2011

просто идея, если вы можете статически поместить первого ребенка в конец карусели, вы можете избежать клона и, следовательно, проблемы.

Надеюсь, это поможет. Привет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...