2010-10-26 13 views
13

He establecido en css la altura de una imagen a un cierto valor y el ancho se modifica automáticamente para que se mantenga la relación de aspecto. Estoy usando la función jquery .width() para obtener el ancho de la imagen después de que css cambia el tamaño de la imagen. en Firefox e Internet Explorer esto funciona muy bien pero en cromo y safari, el ancho devuelto es siempre 0 para cada imagen. el código que estoy usando es el siguiente:jquery .width() problema de cromo y 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. 
    }); 
}); 

y el css para las imágenes:

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

Tener un vistazo a [SO esta pregunta] (http://stackoverflow.com/questions/318630/get-real-image-width -y-alto-con-javascript-en-safari-cromo). Creo que el tuyo es el mismo problema. – lonesomeday

Respuesta

37

En document.ready (que está usando actualmente) imágenes pueden o no pueden ser cargados, si no están en caché, probablemente no están cargados. En su lugar utilice el window.onload event cuando las imágenes son cargado, como esto:

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

Funciona a la perfección. –

+0

width() tampoco me da valores correctos, ¿cómo solucionarlo? http://stackoverflow.com/questions/18650991/phantom-height-when-specifying-the-width-of-a-li-using-jquery – mrN

Cuestiones relacionadas