2012-02-09 52 views
0

我有這樣的代碼jQuery中:jQuery的變量範圍

var ratio; 
$("<img/>").attr("src", $(img).attr("src")).load(function() { 
ratio = this.width/this.height; 
    alert(ratio); 
}); 

這retuns正確的比例,但是當我嘗試這個

var ratio; 
$("<img/>").attr("src", $(img).attr("src")).load(function() { 
ratio = this.width/this.height;   
}); 
alert(ratio); 

它返回未定義

我不明白爲什麼會發生這種情況,即使我已經在全局聲明比率變量。

我用這個在以下爲例:

工作http://jsfiddle.net/7sUAY/5/

不工作http://jsfiddle.net/7sUAY/6/

謝謝 Mugur

+1

由於'load'回調僅在圖像加載時執行,而$(「」).attr()。load()'後面的每個代碼立即執行。否則,根本沒有提供回調的原因是什麼?當然是 – 2012-02-09 11:34:32

+0

!謝謝! – Mike 2012-02-09 11:37:05

回答

2

你只值賦給ratio內一個回調(傳遞給加載函數)。這個回調將在圖片加載完成後進行。在ratio處於提醒狀態,因此ratio保持未定義狀態之前,不會發生此情況。

請參閱here for the load method文檔。

+1

好點。錯過了。謝謝! – Mike 2012-02-09 11:36:52

2

這是因爲​​方法需要更多時間。您的警報執行速度比圖片加載速度快。