jQuery获得响应式图像的高度

时间:2012-05-02 22:13:45

标签: jquery

我有一组响应页面的图像(即最大宽度设置为100%)。

<div class="exh">
   <img src="#" />
</div>
<div class="exh">
   <img src="#" />
</div>
<div class="exh">
   <img src="#" />
</div>

.exh img {
   max-width:100%;
}

如何在调整窗口大小以及加载页面后检索图像的高度?当我使用以下内容时,我的高度为0。

$(".exh img").each(function() {
    var $this = $(this);
    console.log( $this.height() );
});

2 个答案:

答案 0 :(得分:5)

如果您需要在加载页面时以及调整页面大小时执行此操作,请执行以下操作:

$(document).ready( function() { //Fires when DOM is loaded
    getImageSizes();
    $(window).resize(function() { //Fires when window is resized
        getImageSizes();
    });
});
function getImageSizes() {
    $(".exh img").each(function() {
        var $this = $(this);
        console.log( $this.height() );
    });
}

有关.resize()的更多信息:http://api.jquery.com/resize/

有关.ready()的更多信息:http://api.jquery.com/ready/

答案 1 :(得分:2)

根据这个答案我给了一个类似的问题:

Why does jQuery.css('width') return different values in different browsers?

.width()height()是“在DOM中呈现”元素的大小 - 并且为了返回大于0的值,该元素需要完全可用于DOM(aka图像需要满载)

你想要的是:

var myImage= new Image();
myImage.onload=function() { alert(this.height);}
myImage.src= "your/image/url";

简而言之 - 您需要在致电height()

之前保证图片已加载