2011-12-08 75 views
1

我目前有一個div,就像是一個「畫廊」可以這麼說。使用JQuery控制div的高度

div #Images { 
    max-height:90%; 
    height:500px; 
    position:relative; 
    overflow:hidden; 
} 

由於這個div的性質,我必須給它一個高度,否則圖像不顯示。我想要做的事情是使用JQuery將高度設置爲列表中最高圖像的高度。所以我這樣做:

jQuery(document).ready(function($) { 

$(document).ready(function() { 
    var imageHeight = 0; 
     $("#wrap").find("img[id*='car_']").each(function(i) { 
         if (imageHeight < $(this).data('origHeight'))//.height()) 
       imageHeight = $(this).data('origHeight'); 
       }); 
     if (imageHeight > 0) 
     $("#Images").css('height', imageHeight); 
     else 
     $("#Images").css('height', 500); 
    }); 
}); 

不幸的是,imageHeight永遠不會成爲什麼,但0這裏是踢球....如果我添加警報(imageHeight);在.each()的第一次是0,但每次在它後面填充適當的值....我假設由於彈出中斷代碼一段時間,瀏覽器已有時間完全加載所有圖像並抓住適當的高度。

可惜我不是要離開彈出在那裏只是爲了妥善每次填充我的身高。

我在做什麼錯?

+2

嘗試使用$(窗口).load()。它等待圖像完成加載,而$(document).ready()僅等待DOM完成。 – JesseBuesking

+0

你有'// height()',你正在分配DOM包裝器,而不是下一行的高度 – Halcyon

+0

我試過.height()以及.data()都返回相同的東西。 $(window).load()是它做的。謝謝。 – MajinSephiroth

回答

0

這做同樣的事情,但表現得更加明顯:

$(window).load(function() { 
    var imageHeight = 500; 
    $("#wrap").find("img[id*='car_']").each(function(i, o) { 
     imageHeight = Math.max(imageHeight, $(o).height()); 
    }); 
    $("#Images").css('height', imageHeight); 
}); 
+0

$(window).load是我應該使用的,謝謝Frits和JesseB – MajinSephiroth