首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jquery 获取不到图片高度

在使用jQuery获取图片高度时,可能会遇到图片尚未完全加载完成的情况,导致获取到的高度不准确。以下是一些基础概念和相关解决方案:

基础概念

  1. 图片加载事件:图片在页面加载时并不会立即显示,而是需要经过一定的加载过程。如果在图片未完全加载时尝试获取其高度,可能会得到0或其他不准确的结果。
  2. jQuery的.height()方法:该方法用于获取元素的高度,但在图片未完全加载时,可能无法正确获取到高度。

解决方案

为了确保在图片完全加载后再获取其高度,可以使用以下几种方法:

方法一:使用$(window).load()

代码语言:txt
复制
$(window).load(function() {
    var imgHeight = $('img').height();
    console.log('图片高度:', imgHeight);
});

这种方法会在整个页面(包括所有依赖的资源,如图像、CSS、脚本等)完全加载后执行。

方法二:使用img.onload

代码语言:txt
复制
$('img').each(function() {
    $(this).on('load', function() {
        var imgHeight = $(this).height();
        console.log('图片高度:', imgHeight);
    });
});

这种方法会对每个图片单独绑定加载事件,确保在每个图片加载完成后获取其高度。

方法三:使用setTimeout(不推荐)

代码语言:txt
复制
setTimeout(function() {
    var imgHeight = $('img').height();
    console.log('图片高度:', imgHeight);
}, 1000); // 延迟1秒执行

这种方法通过设置延迟来等待图片加载,但并不保证图片一定会在这段时间内加载完成,因此不是最可靠的方法。

应用场景

  • 动态加载图片:当页面中有动态加载的图片时,确保在图片加载完成后再获取其尺寸。
  • 响应式设计:在响应式设计中,图片的高度可能会根据屏幕尺寸变化,需要在图片加载后重新计算。

示例代码

以下是一个完整的示例,展示了如何在图片加载完成后获取其高度:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>获取图片高度</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <img src="path/to/your/image.jpg" alt="示例图片">

    <script>
        $(document).ready(function() {
            $('img').each(function() {
                if(this.complete) {
                    var imgHeight = $(this).height();
                    console.log('图片高度:', imgHeight);
                } else {
                    $(this).on('load', function() {
                        var imgHeight = $(this).height();
                        console.log('图片高度:', imgHeight);
                    });
                }
            });
        });
    </script>
</body>
</html>

在这个示例中,我们首先检查图片是否已经加载完成(通过this.complete属性),如果已经加载完成,则直接获取其高度;否则,绑定load事件,在图片加载完成后获取其高度。

通过这些方法,可以有效解决在使用jQuery获取图片高度时遇到的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JavaScript、Jquery获取屏幕的宽度和高度

在日常的项目中经常需要获取屏幕的宽度或者高度,简单记录一下: Javascript方法获取: document.body.clientWidth //网页可见区域宽 document.body.clientHeight...网页正文部分左 window.screen.height //屏幕分辨率的高 window.screen.width //屏幕分辨率的宽 window.screen.availHeight //屏幕可用工作区高度...window.screen.availWidth //屏幕可用工作区宽度 JQuery方法获取: ($(window).height()); //浏览器当前窗口可视区域高度 ($(document)....height()); //浏览器当前窗口文档的高度 ($(document.body).height());//浏览器当前窗口文档body的高度 ($(document.body).outerHeight...(true));//浏览器当前窗口文档body的总高度 包括border padding margin ($(window).width()); //浏览器当前窗口可视区域宽度 ($(document)

5.3K00
  • jquery scroll 滚动加载列表 获取腾讯云图片像素信息

    jquery scroll 滚动加载列表 获取腾讯云图片像素信息 场景描述 问题处理 其他问题处理 场景描述 bootstarp列表加载图片时需要同时获取图片的像素(宽and高),对于腾讯云这类远程存储获取图片来说...,虽然也可以通过java后台调用腾讯云接口获取图片像素,但是在列表加载大量图片并且没有分页的情况下,如果通过后台逐个获取图片像素信息返回给前台页面渲染的话,会导致前台页面迟迟加载不出来,且有浏览器内存耗尽卡死的风险...,并且腾讯云获取图片像素信息的接口还有频限100的限制,这就更导致了通过后台获取图片像素方案的不适用,那么如果通过页面jquery获取图片像素的时候当图片量很大的时候也是会出现卡顿,加载慢的情况,这个时候就考虑的热区内图片展示像素...,非热区内图片待鼠标下滑啊时再加载像素信息方案的产生。...,待滚动鼠标时再拉去当前页面热区内未加载图片像素信息的图片像素 其他问题处理 由于业务需要,除了列表页,我们同时增加了视图模式,效果如图 列表增加了滚动加载图片像素信息的方法,那么视图模式同样也需要,视图代码结构

    9010

    js获取各种高度总结

    在写js的时候偶尔需要获取各种高度,比如;浏览器高度,页面高度,滚动高度等。抽空整理了我自己常用到的,时间仓促,没有考虑到万恶的IE浏览器。。。。...获取屏幕的高度和宽度(屏幕分辨率): window.screen.height window.screen.width 获取屏幕工作区域的高度和宽度(去掉状态栏): window.screen.availHeight...window.screen.availWidth 网页全文的高度和宽度: document.body.scrollHeight document.body.scrollWidth 滚动条卷上去的高度和向右卷的宽度...: document.body.scrollTop document.body.scrollLeft 网页可见区域的高度和宽度(不加边线): document.body.clientHeight document.body.clientWidth...网页可见区域的高度和宽度(加边线): document.body.offsetHeight document.body.offsetWidth

    12.6K20

    Javascript 获取div真实高度

    这中情况通过#div1.style.width拿不到宽度,而通过#div1.offsetWidth才可以获取到宽度。 第二种情况就是宽和高是写在行内中。          ...原文:http://www.cnblogs.com/zhwl/p/3858682.html 实际测试过程中,发现上面获取真实高度是有问题,其实无论是设置在样式表还是在行内设置,都会获取到你设置的值,如果要获取真实高度...: 获取真实高度...: alert(parseInt($('.article__content div').get(0).offsetHeight)); 获取时只要在这个样式里面的div大小,这个就是真实高度。...这里还附带其它的获取高度方法 alert($(window).height()); //浏览器当前窗口可视区域高度 alert($(document).height()); //浏览器当前窗口文档的高度

    5.1K30

    ClientHeight_offsetheight获取高度不对

    clientHeight:包括padding但不包括border、水平滚动条、margin的元素的高度。对于inline的元素这个属性一直是0,单位px,只读元素。...style.height //返回元素的高度(包括元素高度,不包括内边距、边框和外边距) clientHeight //返回元素的高度(包括元素高度、内边距,不包括边框和外边距) offsetHeight...//返回元素的高度(包括元素高度、内边距和边框,不包括外边距) scrollHeigh //返回元素的高度(包括元素高度、内边距和溢出尺寸,不包括边框和外边距),无溢出的情况,与clientHeight...相同 scrollTop //此属性可以获取或者设置对象的最顶部到对象在当前窗口显示的范围内的顶边的距离,也就是元素滚动条被向下拉动的距离。...offsetTop //返回元素的上外缘距离最近采用定位父元素内壁的距离,如果父元素中没有采用定位的,则是获取上外边缘距离文档内壁的距离。

    3.1K20

    js图片监听onload事件,依然有获取不到宽高的场景

    背景 在实际开发中,移动端页面遇到的,采用正常写法,图片 src赋值写在 onload 事件监听 后面,依然会有拿不到 图片真实宽高的场景,获得的图片宽高都为0,真的是好坑啊。...img = new Image() // 加载完成执行 img.onload = function(){ console.log(img.width,img.height) } // 改变图片的...为了避免图片加载失败或不存在等长场景导致定时器一直执行,可以加一个兜底,比如10秒钟之后自动清除定时器。...// 记录当前时间戳 var start_time = new Date().getTime() // 图片地址 后面加时间戳是为了避免缓存 var img_url = "xxx.jpg" // 创建对象...var img = new Image() // 改变图片的src img.src = img_url // 定时执行获取宽高 var check = function(){ // 只要任何一方大于

    4K20
    领券