在类更改后重新计算jQuery中的元素高度

时间:2010-01-04 06:48:57

标签: jquery css height css3

我有一个项目列表,根据标准,它通过document.ready上的jQuery获取一个类,触发CSS3列。

如果列表显示在列中,则其高度会更小。有没有办法在课程更改后立即在jQuery中获得新的高度?

$items.each(function(i){

var theItem = this;

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

//extended layout

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

上面的代码返回两次调用的初始高度。我猜我需要触发别的东西。

1 个答案:

答案 0 :(得分: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将使其尽快运行,同时仍然在当前正在运行的功能之后。

希望这是你的问题。祝你好运。