JQuery获取动态加载的图片大小的正确方法

原文http://www.vipaq.com/Detail/view/item/211.html

有一些很容易出错的获取动态加载的图片的尺寸的方法, 之所以出错, 主要原因是:你的代码在图片从网页上下载完毕之前就调用了, 这种情况在本机开发时不太容易发现.

jQuery load()事件处理的BUG, 当图片是从浏览器缓存取得时, 获取的是错误的尺寸.

错误的代码是:
(错误)在添加了HTML之后立即调用代码获取尺寸

1var html = '';
2$('#my_div').html(html);
3var width = $('#my_div img').width(); // 可能返回0


(错误)用jQuery的load()事件处理

1var html = '';
2var img = $(html);
3html.load(function(){
4    var width = img.width(); // 如果读取浏览器缓存则返回0
5});
6$('#my_div').html(img);



下面这种才是真正正确的方法, 使用JavaScript的Image类:

正确的方法:

1var html = '';
2$('#my_div').html(html);
3var ni = new Image();
4ni.onload = function(){
5    var width = ni.width;
6}
7ni.src = img.attr(URL);

转载于:https://www.cnblogs.com/samsonhuang/articles/2579904.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值