2010-10-26 6 views
13

Я установил в css высоту изображения для определенного значения, и ширина автоматически изменяется, чтобы соотношение сторон сохранялось. Я использую функцию .width() jquery, чтобы получить ширину изображения после того, как css изменил размер изображения. в Firefox и Internet Explorer это отлично работает, но в хроме и сафари ширина возвращаемой всегда равна 0 для каждого изображения. код, который я использую следующий:jquery .width() проблема с хромом и сафари

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

и CSS для изображений:

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

Посмотрите [это так, вопрос] (http://stackoverflow.com/questions/318630/get-real-image-width и-высота-с JavaScript-в-сафари-хром). Я думаю, что ваша проблема та же. – lonesomeday

ответ

37

В document.ready (который вы используете) изображения может или не может быть загружен, если они не в кеше, они, вероятно, не загружены. Вместо того, чтобы использовать window.onload event когда изображения являются загружены, как это:

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

Работает отлично. –

+0

width() также не дает мне правильных значений, как его решить? http://stackoverflow.com/questions/18650991/phantom-height-when-specifying-the-width-of-a-li-using-jquery – mrN

Смежные вопросы