2013-02-05 64 views
1

我在頁面

<img class="some-class" src="img/some-img.gif" style="top: 29px; left: 121px;"> 

以下img CSS中的第一負載返回0,我有

img.some-class { 
    display: inline-block; 
    position: absolute; 
} 

img位於有display: inline-blockdiv

當我在做console.log($img.height())它輸出0頁面的第一次加載(即在瀏覽器打開後第一次加載)。在我刷新頁面console.log($img.height())後仍然輸出實際的高度值img。什麼可能是問題的原因?

UPD。請注意,img是動態添加的。

+3

第一次圖像尚未加載,所以無法知道它的高度。第二次從緩存中獲取圖像。 – JJJ

+0

爲了避免舊互聯網瀏覽器出現問題,您應該在'.some-class'上指定絕對位置(即'top:0; left:0;')的左/右和頂部/底部屬性。 – kleinfreund

+0

在文檔準備好之後嘗試使用您的代碼 '$(document).ready(function(){console.log($(img).height());});' 它是'$(img).height ();' – asifsid88

回答

5

加載圖像之前,瀏覽器不知道高度。當您第二次加載頁面時,圖像已經在瀏覽器緩存中,因此它知道高度。

您必須將console.log()呼叫置於$(window).load()區塊內。這將在圖像加載後運行。

$(window).load(function() { 
    console.log($('img#myimg').height(); 
}); 

如果圖像是動態添加,那麼你可以把一個load()處理的圖像本身:

$('img#myimg').load(function() { 
    console.log($(this).height()); 
}); 

Load事件信息:

http://api.jquery.com/load-event/

更多信息發現Google:

http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/