2010-10-26 19 views
13

Ich habe in CSS die Höhe eines Bildes auf einen bestimmten Wert eingestellt und die Breite ändert sich automatisch, so dass das Seitenverhältnis erhalten bleibt. Ich benutze die Funktion .width() jquery, um die Breite des Bildes zu erhalten, nachdem das CSS das Bild in der Größe verändert hat. in Firefox und Internet Explorer funktioniert das großartig, aber in Chrome und Safari ist die zurückgegebene Breite immer 0 für jedes Bild. der Code, den ich verwende ist die folgende:jquery .width() Chrome und 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. 
    }); 
}); 

und die CSS für die Bilder:

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

Werfen Sie einen Blick auf [dieser Frage SO] (http://stackoverflow.com/questions/318630/get-real-image-width -und-Höhe-mit-Javascript-in-Safari-Chrom). Ich denke, dein ist das gleiche Problem. – lonesomeday

Antwort

37

In document.ready (die Sie gerade verwenden) Bilder können nicht geladen werden, oder es kann, wenn sie sind nicht im Cache sie wahrscheinlich sind nicht geladen. Verwenden Sie stattdessen die window.onload event, wenn die Bilder geladen sind, wie folgt aus:

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

Funktioniert perfekt. –

+0

Breite() gibt mir auch keine richtigen Werte, wie man es löst? http://StackOverflow.com/Questions/18650991/Phantom-Height-when- Angabe der-Breite-von-Il-Verwendung-Jagebuch – mrN

Verwandte Themen