2012-06-05 166 views
2

我有一个包含表格的div。此表格是动态更新的,并且在用户使用我们的网站时填满了数据。 是否有可能强制这个div始终滚动到底部?这样用户将始终能够看到添加的最底部的表格行。 谢谢!jquery使div总是滚动到底部

+2

是的,但从UX的角度来看,如果您希望用户先看到最新的行。你为什么不以相反的方式对桌子进行排序? – laymanje

+0

我会再给@laymanje添加一点。如果您通过ajax动态更新,则可以在表格顶部插入新行。 – lucuma

回答

4

这将是像

...onRowAdded = function() { 
    $('#myTable').animate({scrollTop: $('#myTable').attr('scrollHeight')}); 
}; 

请注意,如果行经常被添加,您会希望在开始时使用setTimeout和阻止变量检查,以防止每秒向两次以上的滚动频率下降。这种技术被讨论,例如here

UPDATE

与jQuery 1.6开始,最好是使用.prop(),而不是.attr()(见注释这个问题):

onRowAdded = function() { 
    $('#myTable').animate({scrollTop: $('#myTable').prop('scrollHeight')}); 
}; 
+2

您可能需要使用.prop而不是.attr – cmcculloh

+0

@cmcculloh,您是对的 - 从jQuery 1.6开始,使用.prop('scrollHeight')更合适,因为它不是属性,即没有地方在HTML元素的属性中。 –

0

我建议使用ScrollTo JQuery plugin。只需使用

element.scrollTo('max', {axis: 'y'}); 

element.scrollTo('max', duration, {axis: 'y'}); 

这个插件具有一个很好的平滑滚动的增加中获益,

2

尝试类似的东西:

创建一个锚状<a id='bottomDiv'></a>并插入这样document.getElementById('bottomOfDiv').scrollIntoView(true);

一个javascript我在这里举了一个例子 http://jsfiddle.net/PTmpL/1/

0

我认为这可能是简单的解决方案!

element.scrollTo(element.get(0).scrollHeight);