По сути, вы хотите прослушивать события загрузки или 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());
});
});
Но ... таким образом, есть несколько (больших) предостережений. А именно, он не будет работать «всегда» и не будет работать с «кэшированными» изображениями (иногда).
На самом деле лучший способ - это расширение приведенного выше кода (который проверит еще несколько условий, которые довольно сложно проверить) из Desandro, библиотеки с именем 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 ){ });
Я совершенно уверен, что это решит вашу (очень старую ... извините) проблему. Я публикую это здесь, так как это может помочь другим людям.