【发布时间】:2011-10-24 11:06:10
【问题描述】:
基本上我有一个喊话框,新的喊话会添加到喊话框的底部。 我希望每个喊声都以动画方式向下滚动。
问题:它只在它想要的时候才动画..如果你幸运的话,大约是每 10 次喊叫..
现在我尝试应用 .stop() 和 .dequeue() 其他一些事情来弄清楚它为什么会随机发生
这是我正在使用的代码..
function tbSingleScroll(){
if (tbscroll <= 0) {
$('#shouts').animate({scrollTop: $('#shouts')[0].scrollHeight});
}
}
现在因为它是一个实时的喊话箱,并设置为每 1 秒更新一次以检查新的喊声。 它还将滚动设置为 1 秒。 我有一个倒计时函数,它每秒调用这个函数来向下滚动。
现在人们可以阅读之前的呼喊并向上滚动我添加了一个 20 秒的计时器 使用此代码
$("#shouts").scroll(function () {
currentScrollTop = $("#shouts").scrollTop();
if (tempScrollTop > currentScrollTop ) {
tbscroll = 20;
}
tempScrollTop = currentScrollTop;
});
现在有没有更好的方法来设置滚动? 在应用之前是不可能向上滚动的,因为它只会让你锁定在喊话框的底部,因为它被设置为每秒向下滚动。 现在它检测到您已经向上滚动并在它调用向下滚动之前放置 20 秒。
所以我认为它发送了太多请求而没有做任何事情。
如果我能解决这个问题,我将不胜感激,这样我就可以对每个传入的喊声产生很好的影响。 此外,任何有助于更好地滚动的帮助都会很好..
【问题讨论】:
-
我认为更好的方法是:如果检查新喊声的 ajax 脚本返回 true,则根据需要滚动尽可能多的新项目。不要将滚动设置为 1 秒。 (此外,让脚本每秒检查一次可能会导致严重的过载)。
-
嘿,谢谢你的建议,我把卷轴移到了