2009-03-02 11 views
1

Das TD hat ein DIV, in dem ich mit der jQuery-Funktion fadeOut entfernt habe, aber wenn es fertig ist, verschwindet auch der Rahmen.Wie kann ich einen TD ohne Inhalt zwingen, seine Grenze zu rendern?

Ich möchte das vermeiden, gibt es eine andere Möglichkeit als das Hinzufügen eines "& nbsp;" (was es hässlich macht)?

EDIT: Ich verwende Internet Explorer (6 und 7)

Antwort

9

CSS:

table { 
    empty-cells: show; 
} 

Sie müssen auch für diese arbeiten Rendering-Modus IE in Standards setzen. Nach dem Hinzufügen eines Doctype, mindestens IE8 (Beta 2 und höher) spielt gut.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd"> 

IE7 und unten wird es immer noch nicht tun. Unterstützung für empty-cells wird "teilweise" (für IE7 und IE8 Beta 1) auf the MS CSS compatibility statement. Was auch immer "partiell" bedeutet, "Show" kann nicht als "partielle Unterstützung" bezeichnet werden. Dieser Browser kann gezwungen werden, die Zellgrenzen zu zeichnen, indem im Allgemeinen Kollabieren Tabellenrahmen:

table { 
    border-collapse: collapse; 
} 

Die Einstellung von empty-cells wird ignoriert. Wenn Sie jedoch die Ränder ausgeblendet haben, müssen Sie dies nicht mehr festlegen, da alle Browser ausgeblendete Ränder anzeigen.

+0

@Juan: Das ist der richtige Weg, es zu tun, aber es funktioniert nicht in IE – Christoph

+0

ah, aber ich bin mit IE 7 – juan

+0

Hm ... es funktioniert für mich. Sind Sie sicher, dass die Einstellung für leere Zellen zu der Tabelle führt, mit der Sie Probleme haben? Vielleicht ist es irgendwo außer Kraft gesetzt? – Tomalak

3

Ich fügte ein transparentes 1px Bild zu der Zelle als suggested by Jukka "Yucca" Korpela hinzu. Vorerst werde ich diese Lösung verwenden, wenn es keine bessere Alternative ist

+0

arbeitete ich denke, das ist viel hässlicher als die. Aus Sicht des Quellcodes zumindest. Oder ist es das Aussehen, wenn der Text ausgewählt wird, der Sie stört? – Tomalak

+0

Ja, es ist das Aussehen ... es vermasselt die ganze Tabelle – juan

+0

Viele Websites verwenden den Trick, so dass die Benutzer daran gewöhnt sind. Sie können es etwas verbessern, indem Sie die Schriftgröße auf 1 Punkt reduzieren. – finnw

0

Je nachdem, was genau Sie versuchen zu erreichen, könnten Sie die visibility -property des div auf hidden statt Inbetriebn seine display -property zu none , dh Sie müssten display und opacity wiederherstellen und visibility manuell nach dem Anruf auf fadeOut() setzen.

4

ein non-breaking Raum der Zelle hinzufügen:

<td>&nbsp;</td>

ein Hack, aber eine bessere Hack als ein Bild hinzufügen.

+0

@Andrew: Hast du nicht die Antworten von Juan gelesen: Er will das nicht machen, weil es sein Layout durcheinander bringt – Christoph

+0

@Christoph, gotcha. Ich werde die Post aber verlassen. – andleer

+0

Verwenden Sie &, um das kaufmännische Und in "" – finnw

4

< td style = "Schriftgröße: 1pt" > & nbsp; <td>

+0

diskutiert warum die Schriftgröße? – andleer

+0

Dies ist die Lösung, die ich verwendet habe. Die Schriftgröße soll verhindern, dass die Breite des nbsp das Layout durcheinanderbringt. Ich habe festgestellt, dass "font-size: 0" in den von mir überprüften Browsern funktioniert. – bukzor

0

Also, wenn Sie eine Tabelle wie unten haben:

<table border="1"> 
<tr> 
<td>Breakfast</td> 
<td><div id="foo">Lunch</div></td> 
<td>Dinner</td></tr> 
</table> 

Und Sie fadeOut, mit jQuery, Mittagessen, warum nicht ein leer nichts mit fadeIn zurückbringen?

wie unten:

$("#foo").fadeOut("slow").html('').fadeIn("fast"); 
+0

Ich wollte etwas so machen, aber was passiert, wenn sie sich in der Mitte treffen? (Opazität = 0,5)? Ich habe es nicht versucht, weil ich es nicht gut aussehen würde – juan

+0

Könnte falsch sein, aber nicht die Links in der jQuery-Kette ausführen, nur nachdem vorherige zum Booten gegangen ist? Und da Sie einen Bluff in der Mitte haben, sollte der FadeIn-Zug die Spuren mit FadeOut nicht merklich überschreiten. Getestet in Opera 9, IE6 und FF3. – random

+0

Sie haben Recht bezüglich der "Verkettbarkeit"; Ich weiß nicht, ob die Grenzen zwischen dem Ausblenden und dem Überblenden flimmern werden, ich werde es in einer Weile testen (obwohl Sie sagen, dass Sie es getestet haben ...) – juan