2010-10-26 16 views
13

Ustawiłem css na wysokość obrazu do określonej wartości, a szerokość modyfikuje się automatycznie, aby zachować proporcje. Korzystam z funkcji jquery .width(), aby uzyskać szerokość obrazu po zmianie rozmiaru obrazu CSS. w przeglądarce Firefox i przeglądarce internetowej działa to świetnie, ale w chrome i safari zwrócona szerokość jest zawsze równa 0 dla każdego obrazu. kod, który używam jest następujący:jquery .width() Problem z chrome i 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. 
    }); 
}); 

i CSS dla obrazów:

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

Wystarczy popatrzeć na to SO pytanie [] (http://stackoverflow.com/questions/318630/get-real-image-width i-height-with-javascript-in-safari-chrome). Myślę, że twój to ten sam problem. – lonesomeday

Odpowiedz

37

W document.ready (które obecnie używasz) obrazy mogą lub nie mogą być ładowane, jeśli nie są w pamięci podręcznej, prawdopodobnie nie są ładowane w postaci. Zamiast używać window.onload event gdy obrazy załadowany, tak:

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

Działa idealnie. –

+0

width() również nie daje mi właściwych wartości, jak go rozwiązać? http://stackoverflow.com/questions/18650991/phantom-height-when-specifying-the-width-of-a-li-using-jquery – mrN

Powiązane problemy