2013-12-12 2 views
1

У меня есть 40 изображений с классом .myImage с CSS:невозможно получить высоту изображения в JQuery

.myImage{ 
    position:absolute; 
} 

в JQuery я делаю:

$('.myImage').each(function(){ 
    alert($(this).height()); 
}); 

У меня есть хорошая высота для чего-то вроде первых 15 изображений, но тогда предупреждение равно 0 до самого последнего изображения. И я уверен, что каждое изображение отображается, потому что с другим сценарием jQuery я даю каждой из них позицию, и все они отображаются.

Как получилось после 15 изображений предупреждение 0?

+5

Если изображение не загружено еще, как вы ожидаете JQuery (или JavaScript двигателя) для получить высоту? –

ответ

6

Ждут загрузки всех изображений. DOM будет готов, но изображения не будут загружены. Используйте window.load событие вместо JQuery в document.ready

window.load = function(){ 
$('.myImage').each(function(){ 
    alert($(this).height()); 
}); 
}; 
1

Или ждать только для определенных изображений для загрузки

$(document).ready(function(){ 
    var images = $('.myImage'); 

    images.one('load', function(){ 
    images.each(function(){ 
     alert($(this).height()); 
    }) 
    }).each(function() { 
     if(this.complete) $(this).load(); 
    }); 
}); 
+0

Обратите внимание, что это не будет работать последовательно после загрузки первой страницы из-за различий между браузерами в том, как событие загрузки запускается на кешированных изображениях. (не говоря уже о том, что обработчик срабатывает, когда каждый загружается, а не когда все они загружены.) –

+0

Вы правы. Исправлено: http://stackoverflow.com/a/3877079/2573869 –

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