@Thielo:
Ich benutze (meistens) auch jquery.
Bei Deiner Variante wird leider das "flacker"-Problem nicht gelöst, da beim Laden der Seite die Box offen ist und erst im Nachhinein geschlossen wird.
Allerdings habt ihr mich auf eine andere Idee gebracht: Da fast alle meine Scripte erst bei onload laufen, habe ich wohl schon total vergessen, dass es auch anders geht (wie in protonenbeschleuniger´s Beispiel). Ich habe nun folgende Struktur ausprobiert (vereinfacht dargestellt)
.closed {}
<div class="closed">
</div>
<script>
$('.closed').css('display', 'none');
</script>
weiteres html
Das minimiert den Zeitabstand zwischen "erstellen der Box" und "komplettes Laden der Seite". Das Flackern ist damit normalerweise nicht mehr zu sehen - allerdings kann es theoretisch immer noch auftreten (z.b wenn man ein "lag" zwischen den Zeilen </div> und <script> hat).
Habe dann mal probiert das Element zu verstecken bevor es abgeschlossen ist, also so:
.closed {}
<div class="closed">
<script>
$('.closed').css('display', 'none');
</script>
</div>
weiteres html
Und siehe da - das funktioniert. Hätte eigentlich vermutet, dass man erst auf das Tag zugreifen kann, wenn es abgeschlossen ist (also nach </div>) - aber das war wohl ein Irrtum.
Das scheint mir nun also eine praktikable und vernünftige Lösung zu sein.
Danke für eure Hilfe!
Übrigens: Die each-Funktion kannst Du Dir sparen:
$(".box").addClass("closed");
Beschreibung zu addClass():
Adds the specified class(es) to each of the set of matched elements.
Funktioniert mit jeder jquery-Funktion. each verwende ich nur selten
|