基本上我有一个shoutbox,并在shoutbox的底部添加了新的喊叫声。 我希望每个喊叫都向下滚动动画。
问题:它只在它想要的时候动画..如果你的幸运,大约每10个喊叫......
现在我尝试应用.stop()和.dequeue() 还有一些其他的东西要弄清楚它为什么会随机发生
这是我正在使用的代码..
function tbSingleScroll(){
if (tbscroll <= 0) {
$('#shouts').animate({scrollTop: $('#shouts')[0].scrollHeight});
}
}
现在因为它是一个实时的Shoutbox并设置为每1秒更新一次以检查新的喊叫声。 它还将滚动设置为1秒。 我有一个倒计时功能,每秒调用此功能向下滚动。
现在人们可以阅读以前的喊叫并向上滚动我添加了一个20秒的计时器 使用此代码
$("#shouts").scroll(function () {
currentScrollTop = $("#shouts").scrollTop();
if (tempScrollTop > currentScrollTop ) {
tbscroll = 20;
}
tempScrollTop = currentScrollTop;
});
现在有更好的方法来设置滚动吗? 在应用之前,这是不可能向上滚动,因为它会让你锁定在shoutbox的底部,因为它设置为每秒向下滚动。 现在它检测到您已向上滚动并放置20秒后才会调用向下滚动。
所以我认为它发送了太多请求而没有做任何事情。
任何帮助将不胜感激我如何解决这个问题,所以我可以对每一个传入的呼喊产生很好的效果。 另外,任何有助于滚动更好的帮助都会很好..
答案 0 :(得分:0)
这取决于你的shoutbox小部件
如果它有一个api,你可以挂钩一个事件监听器或一个回调到new shout
事件来处理你所有的滚动。
如果它没有提供像api这样的东西,或者没有任何事件,那么你应该调用一个每隔 x 秒滚动一个shoutbox的功能。
我个人认为如果用户正在阅读shoutbox,你应该停止自动滚动。我发现尝试阅读随机向下滚动的内容非常烦人。所以我的建议是当用户滚动或聚焦或点击时停止滚动(取决于你的shoutbox标记)。
这就是我的想法:
$('#shouts').bind('scroll',function(e,data){
//if the user has triggered it, we should stop the auto-scroll
if(data === undefined)
{
clearInterval($('#shouts').data('scrollInterval'));
}
});
var animationDuration = 1000; // 1 second
$('#shouts').data('scrollInterval',setInterval(function(){
var shouts = $('#shouts').get(0);
if(shouts.scrollTop < shouts.scrollHeight)
return;
$('#shouts')
.stop()
.animate({scrollTop: shouts.scrollHeight},animationDuration);
},1000));