2010-01-04 164 views
6

我有一個項目列表,根據標準,它通過document.ready上的jQuery獲得一個類,觸發CSS3列。重新計算jQuery在元素更改後的元素高度

如果列表以列顯示,它將具有較小的高度。有沒有什麼方法可以在課堂更改後立即在jQuery中獲得新的高度?

$items.each(function(i){ 

var theItem = this; 

console.log($(theItem).height()); 

//extended layout 

if (theCriteria) { 
    $(theItem).addClass('extended'); 
    console.log('after', $(theItem).height()); } 
} 

上面的代碼返回兩個調用的初始高度。我猜我需要觸發別的東西。

+0

難道你不能只檢查改變類的代碼的高度? – 2010-01-04 07:04:19

+0

不行,它不起作用。我會在一秒內發佈代碼 – GreenDude 2010-01-04 07:08:33

回答

9

很多時候,dom操作不會發生,直到函數關閉完成。

對這一問題的好文章:http://www.quirksmode.org/blog/archives/2009/08/when_to_read_ou.html

這可能是最好做一個setTimeout函數調用,而不是直接的日誌。

代替:

console.log('after', $(theItem).height()); 

嘗試

setTimeout(function(){ console.log('after', $(theItem).height()); }, 0); 

超時設置爲0將使其儘早運行,而仍是正在運行的當前功能之後。

希望這是你的問題。祝你好運。

+0

作品,歡呼! :) – GreenDude 2010-01-04 08:23:23