2010-10-26 12 views
13

J'ai défini dans css la hauteur d'une image à une certaine valeur et la largeur est automatiquement modifiée pour que le format soit préservé. J'utilise la fonction .width() jquery pour obtenir la largeur de l'image après que le CSS ait redimensionné l'image. dans Firefox et Internet Explorer cela fonctionne très bien mais en chrome et safari la largeur renvoyée est toujours 0 pour chaque image. le code que j'utilise est le suivant:jquery .width() Problème de chrome et de safari

var total=0; 
var widthdiv=0; 
$(function(){ 
    $('.thumb').each(function(){ 
     widthdiv=$(this).width(); 
     total+=widthdiv; 
     alert(widthdiv); //added so i can see what value is returned. 
    }); 
}); 

et pour les images css:

#poze img{ 
    height:80px; 
    width:auto; 
    border:0px; 
    padding-right:4px;  
} 
+0

Jetez un oeil à [cette question SO] (http://stackoverflow.com/questions/318630/get-real-image-width -and-height-with-javascript-in-safari-chrome). Je pense que le vôtre est le même problème. – lonesomeday

Répondre

37

Dans document.ready (que vous utilisez actuellement) des images peuvent ou ne peuvent pas être chargés, si ils ne sont pas en cache, ils ne sont pas chargés. Au lieu d'utiliser le window.onload event lorsque les images sont chargés, comme ceci:

var total=0; 
$(window).load(function() { 
    $('.thumb').each(function() { 
    total += $(this).width(); 
    }); 
}); 
+0

Fonctionne parfaitement. –

+0

width() ne me donne pas non plus de bonnes valeurs, comment le résoudre? http://stackoverflow.com/questions/18650991/phantom-height-when-specifying-the-width-of-a-li-using-jquery – mrN