2012-05-22 44 views
4

我有很長的base64字符串類型我得到的,我想設定爲圖像寬度和圖像的高度是零,因爲異步圖像加載的

$('#img').attr('src',base64data) 
console.log('height - ' $('#img').height()); 
console.log('width - ' $('#img').height()); 

它看起來像即時得到回來的src0對於heightwidth。當然,如果我等一會 那麼我會得到適當的高度。

事情是.attr()沒有回調,我將如何得到有關獲取src屬性設置後沒有得到0返回的高度和寬度。 (我覺得我得到0,因爲jQuery中的變化是異步發生的事情,但我不能太肯定)

+0

你有沒有試過'.load()'-callback? –

+0

沒有,但即時通訊給了這個鏡頭,它明顯好於我想要的resize事件處理程序 – Akshat

回答

11
$('#img').one('load', function() { 
    console.log('height - ' $(this).height()); 
    console.log('width - ' $(this).width()); 
}) 
.attr('src',base64data); 

/* if this image is already cached load event couldn't be fired: 
* then look for "complete" status and trigger load event 
*/ 
if ($('#img').get(0).complete) { 
    $('#img').trigger('load'); 
} 

越來越width之前和height需要等待load事件。 請注意,我用one()方法,因爲如果圖像已被緩存,它不應該發射load事件兩次

+0

只要確保你知道「使用圖像加載」事件的注意事項「(在[load 'API](http://api.jquery.com/load-event/)) –

+0

發佈更新以管理已緩存的圖像 – fcalderan

+0

是.one還是.on?這在我的具體例子'one()'中雖然 – Akshat