В принципе, вы хотите прослушивать события загрузки или readystatechange из элемента img.
Так что вам нужно сделать, это:
$(window).load(function(){
$('.image-principale img').on("load readystatechange", function(){
// Here you can check whether it state complete by checking
// if(this.complete || (this.readyState == 'complete' && e.type == 'readystatechange')) { }
$(this).parent().css('height', $(this).height());
});
});
... Но этот способ имеет несколько (большие) предостережений. А именно, что он не будет «всегда» работать, и он не будет работать с изображениями «кеш» (иногда). Наилучший способ - это на самом деле степень вышеприведенного кода (который будет проверять некоторые дополнительные условия, которые достаточно сложно проверить) из библиотеки Desadro, которая называется jquery.imagesLoaded
Он будет проверять наличие событий и другие условия (например, сломанные изображения, кешированные изображения, загруженный элемент, ...) и дает вам обратную связь при загрузке ВСЕХ элементов.
Реализуется это (вы можете видеть больше на сайте):
// Loading script
var dfd = $('#my-container').imagesLoaded(function($images, $proper, $broken){
//Here you can do a loop on $proper that is the list of images that properly loaded.
}); // save a deferred object and use dfd later
Вы также можете иметь для каждого изображения, загруженного, обратного вызова:
dfd.progress(function(isBroken, $images, $proper, $broken){ });
Я совершенно уверен, что это будет решите ваш (очень старый ... извините) проблема. Я размещаю его здесь, так как это может помочь некоторым другим людям.
Вы хотите, чтобы он запускался для каждого изображения при загрузке? –
Да, каждое изображение, имеющее определенный класс –