2011-06-27 63 views
1

我有一個腳本做一個任務很像一個普通的聊天。每當我打開新郵件我填一個div像這樣:jQuery的問題滾動到

.... 
<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的母公司),所以我真的在這裏感到震驚......提前

感謝

+0

我可以問你的代碼行中的第二個參數是什麼嗎? '$(「div.conversation:last」,itemBox).offset();''中的'itemBox'是什麼?我不知道你選擇時可以傳遞2個參數給jquery .. –

+0

第二個參數是函數的上下文。你可以傳遞給jQuery第二個參數,它只會在提供的上下文中查找你的搜索,如果沒有提供上下文,整個窗口就是上下文... –

+0

非常感謝。我不知道那是存在的。 –

回答

0

好吧,

我沒有太多這樣整個「回答我的問題」的東西的粉絲,但我不太留下一個懸而未決的問題的風扇。位置函數在一些主流瀏覽器上可以工作在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); 

它在所有的瀏覽器上完美地工作,引用,不是最漂亮的解決方案,但工作原理是毫無意義的。

3

嘗試使用.position()代替.offset()如果你可以把它爲您的需求而工作。

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

我已經受夠了錯誤的一個類似的問題偏移與jQuery

+1

問題稍微有所改善,在IE上效果更好,但仍然沒有跟蹤FF上的對話(使用FF4進行測試) –

0

計算可能是你可以嘗試使用ViewPort