2012-05-02 2 views
0

У меня есть набор изображений, которые реагируют на страницу (т. Е. Максимальная ширина установлена ​​на 100%).jQuery Получить высоту отзывчивого изображения

<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()); 
}); 
+0

Действительно ли вы загружали изображения в те теги изображений, когда вы это пробовали? У пустого тега img была бы рассчитанная высота 0. Я предполагаю, что вы это сделали, я просто прошу убедиться, что такие ошибки происходят. – Armatus

+0

Да, на самом деле есть изображения ха-ха! Я просто ничего не ставил там, например, для целей. – cusejuice

ответ

1

за этот ответ я дал на аналогичный вопрос:

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

.width() или height() является «вынесено в DOM» размер элемента - и для того, чтобы вернуть значение больше 0, элемент должен быть полностью доступен для DOM (иначе изображение должно быть полностью загружено)

Что вы хотите:

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

Короче говоря - вы должны гарантировать, что изображение загружается перед вызовом height()

4

Если вам нужно сделать, это каждый раз, когда страница загружена, и когда страница изменяется это сделать:

$(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/

+0

Я не думаю, что это был его реальный вопрос. Его проблема заключается в том, что height() возвращает 0, когда он этого не ожидает. – Armatus

+0

По сути, это тот же самый ответ, который я дал - только в той мере, в какой это родной JQuery, а не ванильный javascript. Концепция остается той же: запрос 'height()' встречается до загрузки изображения. –

+0

За исключением того, что я предоставил ссылки на события для готовности DOM и для изменения размера окна, о чем он просил. –

Смежные вопросы