由于异步图像加载,图像的宽度和高度为零

我有一个很长的base64类型的字符串,我想设置为图像的src

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

看起来我的heightwidth都是0 。 当然,如果我等一会儿,我会得到适当的高度。

事情是.attr()没有回调,如何在设置src属性后获得高度和宽度而不返回0 。 (我想我得到0因为Jquery的变化是异步发生但我不能太确定)

 $('#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'); } 

在获得widthheight之前,您需要等待load事件。 请注意,我使用了one()方法,因为如果图像已经缓存,则不应该两次触发load事件