由于异步图像加载,图像的宽度和高度为零
我有一个很长的base64
类型的字符串,我想设置为图像的src
$('#img').attr('src',base64data) console.log('height - ' $('#img').height()); console.log('width - ' $('#img').height());
看起来我的height
和width
都是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'); }
在获得width
和height
之前,您需要等待load
事件。 请注意,我使用了one()
方法,因为如果图像已经缓存,则不应该两次触发load
事件