我正在追加一个新的列表项并尝试将其滚动到视图中。
这是我的HTML:
<div class="slim-scrollbar">
<ul class="chats">
<li class="out">dynamic text with variable lengths</li>
<li class="in">dynamic text with variable lengths</li>
<li class="in">dynamic text with variable lengths</li>
</ul>
</div>
我当前的jquery将一个项目附加到列表中:
var direction='out';
$('.chats').append('<li class="'+direction+'">'+textVar+'</li>');
我的jquery尝试:
$(".chats").animate({
scrollTop: ???
}, 1000);
如何将新列表元素滚动到视图中?
答案 0 :(得分:4)
要使用您的代码,这应该有效:
$('body,html').animate({
scrollTop: $('.chats li:last-child').offset().top + 'px'
}, 1000);
答案 1 :(得分:0)
第1步:确保您已安装scrollTo()
plugin。
步骤2:将附加对象保存在临时变量中,然后滚动主体(或父div,如果在可滚动的div中)。
var newelem = $('<li class="'+direction+'">'+textVar+'</li>');
$('.chats').append(newelem);
$('body').scrollTo(newelem);
答案 2 :(得分:0)
如果你真的需要使用jQuery动画,这可能不是你的选择,但是,你也可以给你的列表一个id,然后使用本机功能让用户获得新添加的内容。
<ul id="new-stuff" class="chats">
//Append the element and all that good stuff.
location.hash = '#new-stuff';
答案 3 :(得分:0)
我建议采用更清洁的解决方案:
var direction = 'out',
lastLi = $("<li/>", {
class: direction,
text: textVar
}).appendTo('.cheats');
$(document).animate({
scrollTop: lastLi.offset().top + 'px'
}, 1000);
答案 4 :(得分:0)
假设你的列表位于一个有一定高度的包装div中。
<div id="chatsWrapper" style="height: 200px; overflow:auto;">
<ul class="chats">
<li class="out">dynamic text with variable lengths</li>
<li class="in">dynamic text with variable lengths</li>
<li class="in">dynamic text with variable lengths</li>
</ul>
</div>
$('.chats').append('<li class="'+direction+'">'+textVar+'</li>');
只需将包装器div设置为任意高的像素值:
$('#chatsWrapper').animate({ scrollTop: 10000 }, 'normal');