jQuery 的scrollTo 问题

发布于 2024-11-17 04:30:52 字数 540 浏览 2 评论 0原文

我有一个脚本执行类似于常规聊天的任务。每当我加载新消息时,我都会像这样填充一个 div:

....
<div class="conversation">
   <span class="sender">Sender: </span><span>Message sent by sender..</span>
</div>
....

然后,使用 jQuery 我会做这样的事情:

var lastOne = $("div.conversation:last", itemBox).offset();
itemBox.scrollTop(lastOne.top);

当我有一些(〜40条消息)时,它工作正常,但是当列表变得太大时,它开始计算偏移错误。这种情况尤其发生在占用超过 3 行的大消息上。我没有在聊天框内使用任何浮动(所有 div.conversation 的父级),所以我在这里真的很震惊......

提前致谢

I have a script doing a task much like a regular chat. Whenever I load new messages I fill a div like this:

....
<div class="conversation">
   <span class="sender">Sender: </span><span>Message sent by sender..</span>
</div>
....

Then, using jQuery I do something like this:

var lastOne = $("div.conversation:last", itemBox).offset();
itemBox.scrollTop(lastOne.top);

When I'm having a few (~40 messages) it works ok, but when the list grows too large, it starts calculating the offset wrong. This happens specially with large messages, taking over 3 lines. I'm not using any float inside the chat box (parent of all div.conversation), so I'm really shocked here...

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水水月牙 2024-11-24 04:30:52

如果您可以使其满足您的需求,请尝试使用 .position() 而不是 .offset()

http://api.jquery.com/position/

我遇到了类似的问题,偏移量错误使用 jQuery 进行计算

Try use .position() instead of .offset() if you can make it work for your needs.

http://api.jquery.com/position/

I've had a similiar problem with wrong offset calculations with jQuery

情话难免假 2024-11-24 04:30:52

也许您可以尝试使用 ViewPort

May be you can try using ViewPort ?

Hello爱情风 2024-11-24 04:30:52

好吧,

我不太喜欢做这整个“回答我的问题”的事情,但我不太喜欢留下一个悬而未决的问题。位置函数确实可以在一些主要浏览器上的 jQuery 上工作,但我还没弄清楚为什么......它在 FFx 4 中消失了,此时我必须计算框中所有 div 的高度,就像这样

var itemBox = $("#conversation5");
var loader = $("div.conversation", itemBox);
var sum = 0;

for (var i = 0; i < loader.length; i++)
   sum += $(loader[i]).innerHeight();

itemBox.scrollTop(sum);

:诚然,它可以在所有浏览器上完美运行,这不是最漂亮的解决方案,但仍然可以运行。

Okay,

I'm not much of a fan of doing this whole "answering my question" thing, but I'm less of a fan of leaving an open question. The position function does work on jQuery with some major browsers, but I haven't figured out why.. it dies with FFx 4, at the point I had to calculate the height of all the divs in the box, much like this:

var itemBox = $("#conversation5");
var loader = $("div.conversation", itemBox);
var sum = 0;

for (var i = 0; i < loader.length; i++)
   sum += $(loader[i]).innerHeight();

itemBox.scrollTop(sum);

It works flawlessly on all browsers, admitedly, not the prettiest solutions, but works nontheless.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文