2011-05-05 61 views
5

我試圖用它們的load()方法得到一些圖像的縱橫比。

$('img').load(function(){ 
    alert(this.src); 
    alert($(this).width()); 
    setAspectRatio(this); 
}); 

(this.src)告訴我我期望聽到什麼。 ($(本).WIDTH())給了我0.1

我發現這個文檔中的負載():

與圖像

一個共同使用時加載事件的

注意事項挑戰開發人員嘗試使用.load()快捷方式來解決圖像(或圖像集合)完全加載時執行的功能。有幾個已知的警告與此應該注意。它們是:

  • 這並不一致,也不可靠地工作,跨瀏覽器的
  • 它不正確的WebKit如果圖像的src設置爲相同的SRC像以前
  • 它不火正確地泡了DOM樹
  • 可以停止火已經生活在瀏覽器的緩存圖片

一對夫婦這些項目聽起來有點含糊,我,但THES使用get()方法將圖像添加到元素中,所以我最好的猜測是我的問題與此有關。

這似乎不是一個不尋常的情況,但谷歌不給我任何東西。這裏有沒有人遇到過這個?

+0

你爲什麼不能包括'width'和'height'你的''元素屬性? 「它不一致,也不可靠地跨瀏覽器」告誡幾乎意味着「不要嘗試這個」。 – 2011-05-05 04:47:15

+0

想想吧,我甚至沒有考慮過。我更喜歡不需要額外標記的解決方案,但這肯定會起作用,這非常棒。謝謝! – Patrick 2011-05-05 04:59:18

+0

總是在圖像中包含'width'和'heigh'屬性,它整齊地消除了很多混淆,時間問題和其他問題。 – 2011-05-05 05:09:30

回答

1

您是否嘗試過使用

$(window).load(function(){ 
    //initialize after images are loaded 
}); 

這不會觸發,直至頁面完成下來。然後,你可以抓住任何你想要的img,並使用你的腳本。

+0

不幸的是,由於圖像通過get()進入頁面,當窗口加載時它們不存在。 – Patrick 2011-05-05 05:36:59

0

This answer也涉及到這個問題。您的代碼無法在緩存的圖像上工作,因爲當圖像已被緩存時,加載事件通常在進行回調綁定之前觸發。鏈接答案中的代碼解決了這個問題。

1

嘗試使用此

$('<img/>').load(function(){ }); 
0

你試過以下

$('img').load(function() { 
     alert(this.src); 
     alert($(this).width()); 
     setAspectRatio(this); }).delay(500);​