jQuery的scrollTo问题

时间:2011-06-27 17:54:50

标签: jquery scroll offset

我有一个脚本执行任务,就像常规聊天一样。每当我加载新消息时,我都会填写这样的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的父级),所以我真的很震惊......

提前致谢

3 个答案:

答案 0 :(得分:3)

如果可以使其符合您的需求,请尝试使用.position()代替.offset()

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

我有一个与jQuery错误偏移计算相似的问题

答案 1 :(得分:0)

您可以尝试使用ViewPort吗?

答案 2 :(得分:0)

好,

我不是很喜欢做这整个“回答我的问题”的事情,但我不喜欢留下一个悬而未决的问题。 position函数确实可以在jQuery上运行一些主流浏览器,但是我还没弄清楚为什么......它会死于FFx 4,我必须计算框中所有div的高度,就像这样: / p>

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);

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