2009-07-09 11 views
1

Ich habe mehrere der gleichen Klasse von Element auf einer Seite und versuche, sie alle auf die gleiche Höhe zu bekommen, obwohl der Inhalt innerhalb leicht variiert. Ich habe zusammen eine kleine Funktion setzen, die Ergebnisse sowohl in Firefox 2+ und Safari 3+ ergibt aber nicht offenbar nicht einmal im IE registrieren 7. Hier ist, was ich verwende:Problem Einstellung gleicher Höhen mit jQuery in IE

var tallestcopy = 0; 
    $(".calloutL2Copy").each(
     function(index) { 
      var tallest = $(this).height(); 
      if (tallest > tallestcopy) { 
       tallestcopy = tallest 
      } 
     }); 
    $(".calloutL2Copy").css("height",tallestcopy); 

Wo die Klasse“. calloutL2Copy "wird auf ein div angewendet, das Text und das gelegentliche Bild enthält. Ich habe auch versucht mit der letzten Zeile ersetzt:

$(".calloutL2Copy").height(tallestcopy); 

Auch dies funktioniert in Firefox und Safari, aber hat keinen Einfluss auf dem gleichen divs im Internet Explorer. Ich habe überprüft, dass IE den höchsten Pixelwert korrekt erhält, es wird nur nicht auf die Geschwister angewendet. Kann mir jemand Ratschläge geben, damit dieses Ding funktioniert?

UPDATE:

Hier ist ein Beispiel für den Code aus dem Ort, an dem ich diese Technik anwenden bin versucht. Ich habe den Code nicht geschrieben (und mir ist bewusst, dass es einen ernsthaften Fall von div-itis gibt), ich versuche nur, CSS-Fehler zu beheben.

<div id="calloutL2Top"> 
<div class="calloutL2"> 
    <a href="#"><img class="calloutL2Img" alt="" src="something.jpg" width="217" height="81"></a> 
    <div class="calloutL2Copy"> 
     <h3>Lorem Ipsum</h3> 
     Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
    </div> 
</div> 

<div class="calloutL2"> 
    <a href="#"><img class="calloutL2Img" alt="" src="something.jpg" width="217" height="81"></a> 
    <div class="calloutL2Copy"> 
     <h3>Lorem Ipsum</h3> 
     Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
    </div> 
</div></div> 

UPDATE WIEDER:

Ich habe grünes Licht von den höheren Mächten und ich werde die IP der Website veröffentlichen, die Seiten in Frage direkt tun, so können Sie aus erster Hand sehen, was das Problem ist, :

[url removed]

Was die Serie von Boxen zu beheben sind entlang der Unterseite des Hauptinhaltsbereich ich versuche. Hoffentlich ist das ein wenig hilfreicher.

+0

Verwenden Sie eine gültige Doctype? – Fermin

+0

Sind die Elemente auf Blockebene? Ich denke, IE wird nur Höhen-Stil auf Block-Level-Elemente anwenden. –

+0

@Fermin Ja, der Doctype ist auf HTML 4.01 Strict eingestellt. @Josh Divs sind standardmäßig Elemente auf Blockebene, aber sogar explizit Einstellung display: block; im CSS für die divs funktioniert immer noch nicht. – Andrew

Antwort

1

Ich glaube, Sie brauchen eine Einheit geben ...

$(".calloutL2Copy").css("height", tallestcopy + "px"); 

EDIT:

Ich glaube, Sie sind ein Opfer eines IE-Bug. Um es zu beheben, glaube ich Ihnen eine klare div als das letzte Kind des schwebte Eltern brauchen werden ...

<div style="clear:both; font-size:1px; height:1px">&nbsp;</div> 

EDIT 2:

Zeigen Sie die Quelle Ihrer Website. Die erste Zeile muss der DOCTYPE sein, und Sie haben dort einen seltsamen Charakter. Sup dabei ?!

+0

Teig ... warum habe ich nicht daran gedacht. Wahrscheinlich ist ein anderer guter Grund, dass das Skript in IE –

+0

nicht funktioniert Ich habe versucht, px vorher so hinzuzufügen, aber ohne Erfolg. – Andrew

+0

jq wird dies tun, wenn für Sie – redsquare

1

Haben Sie

versucht
$(".calloutL2Copy").children().css("height",tallestcopy); 

Dies sollte die CSS-Stil auf alle ersten Ebene Kinder .calloutL2Copy gelten.

Auch, wie genau ist Ihr HTML verschachtelt? Eine andere Sache, die Sie versuchen könnten, wäre es Firefox zu brandmarken, während das Skript läuft und genau sehen, was Ihren Wert erreicht. Dies könnte Ihnen helfen zu verstehen, warum der IE nicht funktioniert. (Wenn du IE8 hast, der Entwicklerwerkzeuge hat, könntest du deinen HTML-Code auch nach dem Skript betrachten und sehen, was genau das CSS bekommen hat und was nicht).

+0

Ich habe Ihren Code ein wenig modifiziert, weil .calloutL2Copy die Größe ist, die ich ändern möchte, nicht seine Kinder, und ich habe den Pixelteil aus dem Kommentar darunter hinzugefügt. Ich habe den Selektor nach oben in den Container verschoben und es funktioniert wieder in Firefox und Safari, aber nicht in IE. Wenn ich Firebug benutze, wird im CSS angezeigt, dass die Höhen korrekt angewendet werden. Ich bin total ratlos. – Andrew

+0

Können Sie Entwicklerwerkzeuge in IE8 verwenden, um zu sehen, was IE tut? –

0

Ich habe eine Testseite mit HTML 4 erstellt.01 Strict DOCTYPE und der genaue Code, den Sie in der Frage angegeben haben, und es funktioniert wie in IE 6, 7 und 8 für mich vorgesehen. Möglicherweise gibt es in Ihrem CSS eine voreingestellte Höhe oder Min/Max-Höhe, die vererbt wird und Konflikte oder eine andere Manipulation der Höhe in anderem JavaScript auf Ihrer Seite verursacht?

http://www.lifford.org/exp/testcase/stackoverflow_IEheights.html

+0

Das schmälert das Ganze ein wenig. Es gibt ein paar andere Skripte, die auf der Site laufen, aber sie dienen hauptsächlich dazu, Variablen und Dinge dieser Art weiterzuleiten. Ich nehme an, dass der nächste Schritt für mich darin besteht, Teile von CSS zu isolieren und zu sehen, was außer Kraft gesetzt wird. – Andrew