2010-10-26 17 views
13

Ho impostato in css l'altezza di un'immagine ad un certo valore e la larghezza cambia automaticamente in modo che le proporzioni siano preservate. Sto usando la funzione jquery .width() per ottenere la larghezza dell'immagine dopo che il css ha ridimensionato l'immagine. in Firefox e Internet Explorer questo funziona alla grande ma in chrome e safari la larghezza restituita è sempre 0 per ogni immagine. il codice che sto usando è la seguente:jquery .width() chrome e safari problem

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. 
    }); 
}); 

e il css per le immagini:

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

Date un'occhiata a [questa domanda SO] (http://stackoverflow.com/questions/318630/get-real-image-width -e-altezza-con-javascript-in-safari-cromo). Penso che il tuo sia lo stesso problema. – lonesomeday

risposta

37

In document.ready (che si sta attualmente utilizzando) le immagini possono o non possono essere caricati, se non sono nella cache, probabilmente non sono stati caricati. Invece utilizzare il window.onload event quando le immagini sono caricato, in questo modo:

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

Funziona perfettamente. –

+0

width() non mi dà anche i valori corretti, come risolverlo? http://stackoverflow.com/questions/18650991/phantom-height-when-specifying-the-width-of-a-li-using-jquery – mrN

Problemi correlati