【问题标题】:jQuery gets the image height before the image is loaded?jQuery在图像加载之前获取图像高度?
【发布时间】:2016-09-28 16:28:22
【问题描述】:

我环顾四周,尝试了很多解决方案,但 jquery 仍然试图在图像加载之前获取图像高度:

$('img').load(function(){
    var heightStart = $(".carousel .carousel-inner img").height();
    alert(heightStart); // 0
});

我总是得到 0。有什么想法最好的方法是什么?

我什至尝试过使用普通的 js:

    var i = new Image()
    i.src = "images/xxx.jpg";
    var h = i.height
    alert(heightStart); // 464

它获取图像高度但数字错误!数字总是较小,但图像的高度较长。

编辑:

图像没有高度和宽度属性:

<div id="myCarousel" class="carousel slide" data-ride="carousel">

    <div class="carousel-inner">

    <div class="item active">

        <img class="first-slide" src="images/xxx.jpg" alt="First slide" class="img-responsive">
        <div class="container">
            <div class="carousel-caption">xxx</p>
                </div>
            </div>
        </div>
    </div>

我的图像高度是464,所以new Image() 正确。但问题是图像在大屏幕上已经用img-responsive调整了大小。

【问题讨论】:

  • 叫我疯了,但对于第一部分,不应该是$(".carousel .carousel-inner img").load吗?如果你只是做$('img'),即使页面上的第一个图像加载,它也会调用该函数,而不仅仅是那个特定的图像。当然,我看不到你的 HTML,也许它是页面上唯一的图像...
  • 各位,请看我上面的编辑。谢谢。
  • 这就是你关于标题含义的所有问题吗?如果是这样:stackoverflow.com/a/6575319/1414562
  • @A.Wolff 已经尝试过这个答案。但仍然没有运气。

标签: javascript jquery image


【解决方案1】:
$('img').load(function(){
    alert($(this).height());
});

var i = new Image()
i.src = "images/xxx.jpg";
i.onload = function() { alert(this.height) };

对答案的一点解释 - 您的第一个函数将 onload 侦听器注册到 all 存在 img 元素,这些元素会提醒 .carousel .carousel-inner 高度内第一个匹配的 img 元素,它可能是 0,谁知道呢。

您的香草示例的问题是您试图在图像加载完成之前提醒高度。

【讨论】:

  • @teelou 我不明白问题出在哪里?
猜你喜欢
  • 1970-01-01
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 2011-09-22
  • 2023-04-05
  • 2010-11-26
  • 2012-11-05
  • 1970-01-01
相关资源
最近更新 更多