2013-02-20 2 views
0

так, у меня есть DIV в DIV как этотположения(). Сверху не изменяется после добавления элементов

<div id="container"> 
<div id="bottom"> </div> 
</div> 

контейнер является абсолютным позиционированным.

я добавлять элементы с помощью .До()

$("#bottom").before('<p>Some Paragraph</p>'); 

тогда я пытаюсь прокрутите вниз до нижней части контейнера

$("#container").scrollTop($('#bottom').position().top); 

он работает на некоторое время, но затем перестает работать.

если я печатаю «$ ('# bottom'). Position(). Top", я вижу, что он увеличивается до некоторой точки, а затем останавливается.

причина, по которой я делаю этот путь, потому что у меня также есть анимация перед прокруткой, и она отлично работает с анимацией, но, как я сказал, до некоторой степени.

Единственное временное решение, с которым я столкнулся, это (в основном положил некоторое количество).

$("#container").scrollTop(10000000); 

ответ

0

Использование offset() вместо position():

$("#container").scrollTop($('#bottom').offset().top); 

См: http://api.jquery.com/offset/

+0

nope такой же результат – btevfik

+0

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

0

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

Решение было:

setTimeout(function(){ 
    $("#container").scrollTop($('#bottom').position().top); 
}, 50); 

PS .: 50 является особенно произвольное число, то оно работает только с 0 в моем случае.

Смежные вопросы