2015-07-15 2 views
1

У меня есть следующая структура div.Как прокрутить вниз до нижнего дочернего div с помощью jquery

<div id="conversation" class="list-view"> 
<div class="conv"> 
    <div class="msg">Hi 1</div> 
    <div class="msg">Hi 2</div> 
    <div class="msg">Hi 3</div> 
    <div class="msg">Hi 4</div> 
    <div class="msg">Hi 5</div> 
    <div class="msg">Hi 6</div> 
    <div class="msg">Hi 7</div> 
    <div class="msg">Hi 8</div> 
    <div class="msg">Hi 9</div> 
    <div class="msg">Hi 10</div> 
</div> 
</div> 

Теперь, когда я добавить на AJAX Submit кнопку новый DIV <div class="msg">Hi 11</div> добавил в конце <div class="conv">. Я хочу прокрутить вниз до нового добавленного div.

Я использовал следующий, но не работает.

$('.conv ').animate({scrollTop: $('.conv')[0].scrollHeight}, 'slow'); 
                     $('.conv').scrollTop($('.conv')[0].scrollHeight); 

Как прокрутить вниз до нижнего дочернего div. Положение родительского div фиксировано.

+0

вам нужно добавить CSS для ко DIV – Pete

+0

Каких CSS необходимых? – Dhara

+0

Возможный дубликат [Прокрутить в конец div?] (Http://stackoverflow.com/questions/270612/scroll-to-bottom-of-div) – CBroe

ответ

2

Вам нужно будет зафиксировать высоту .conv, если вы хотите, чтобы просмотреть это. В противном случае используйте прокрутку на теле.

Демо: http://jsfiddle.net/GCu2D/775/

JS:

$(document).ready(function() { 
    $('.conv ').animate({ 
     scrollTop: $('.conv .msg:last-child').position().top 
    }, 'slow'); 
}); 

CSS:

.conv { 
    max-height:100px; //for demo 
    overflow:auto; 
} 
+0

Привет, он прокручивает до последнего элемента, но после прокрутки снова фокусируется на верхний div. для div 'max-height'? – Dhara

+0

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

+0

Вот обновленная демонстрация: http://jsfiddle.net/GCu2D/777/ –

0

Вы можете использовать следующий код, как:

$('.conv').animate({scrollTop: $('.conv div.msg:last').offset().top}); 

Для демонстрации: http://jsfiddle.net/GCu2D/776/

+0

Я бы использовал 'position', а не' offset' – Pete

+0

. Вы можете использовать это, поскольку метод .position() позволяет нам извлекать текущую позицию элемента относительно родителя смещения, тогда как метод offset() извлекает текущую позицию относительно к документу. –

+0

Это не работает :( – Dhara

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