Chrome和Safari浏览器jquery width()获取不到高度的问题

问题概要 :

偶要遍历一组图片,遍历时需要获取其宽度,效果出来后,IE和Firefox都没有问题,唯独Chrome和Safari会出现获取不到图片宽度的情况。以往基本上是IE不兼容,这下出现Chrome和Safari不兼容了,倒觉得稀奇了,故写出来分享下。

注:代码修改之前,直接用的$(ele).width()来取图片的宽度。涉及代码:


  
  
  1. $(function(){
  2. ... //此处省略N行
  3. var w = $(this).width();
  4. ... //此处省略N行
  5. });

分析后得知,Chrome和Safari肯定是图片还没有完全载入进来,就去获取图片的宽度了,得其宽度为0,肯定就出错了

解决办法:

一、不要使用”$(document.ready(function(){…})”或其简写形式”$(function(){…}),使用$(window).load(function(){}); 代码改写如下:


  
  
  1. $(window).load(function(){
  2. ... //此处省略N行
  3. var w = $(this).width();
  4. ... //此处省略N行
  5. });

  
  
  1.  

二、使用Image对象和其onload方法


  
  
  1. $(function(){
  2. ... //此处省略N行
  3. var that = $(this);
  4. var img = new Image();
  5. img.src = $(this).attr("src");
  6. img.onload = function(){
  7. var w = img.width;
  8. }
  9. ... //此处省略N行
  10. });

最后啰嗦下,获取高度,用$(ele).height()在Chrome和Safari下也会出现此问题。





出处:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值