2016-09-28 96 views
0

我环顾四周,并尝试了多种解决方案,但仍jQuery的试图获取图像高度加载图像之前:jQuery在图像加载之前获取图像高度?

$('img').load(function(){ 
    var heightStart = $(".carousel .carousel-inner img").height(); 
    alert(heightStart); // 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的大屏幕上调整大小。

+0

叫我疯了,但对于第一部分,不应该是'$(“。carousel .carousel-inner img”)。如果只是执行'$('img')',即使页面上的第一张图像加载时,它也会调用该函数,而不仅仅是该特定图像。当然,我看不到你的HTML,也许这是唯一的图像... – aaronofleonard

+0

家伙,请参阅我上面的编辑。谢谢。 – laukok

+0

这就是你所有关于你的头衔是什么意思的问题吗?如果是这样:http://stackoverflow.com/a/6575319/1414562 –

回答

3
$('img').load(function(){ 
    alert($(this).height()); 
}); 

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

一点解释去的答案 - 你的第一个功能的onload听众寄存器,提醒.carousel .carousel-inner的高度范围内第一个匹配img元素的所有目前img元素,这可能是0,谁知道。

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

+0

感谢您的答案。请参阅我上面的编辑。 – laukok

+0

@teelou我不明白是什么问题? –