[TYPO3-german] OT jQuery: Nach .hide() zeigt .show() keinen Inhalt mehr an

Johannes C. Laxander jc at laxander.com
Fri Jun 26 11:33:56 CEST 2015


Hallo Bernd,

erst mal vielen Dank für deine ausführliche und nachvollziehbare Antwort.
Das mit der komplexen Selektion stimmt schon, vermutlich durchs
"rumprobieren" der letzte Stand.
Aber es macht natürlich Sinn das zu vereinfachen!

Ich teste mal deinen Vorschlag und geb' wieder feedback. Der Tipp mit der
"racing condition" ist gut. Versuche es ggf. mal mit einem Timeout.

Gruß, Johannes.

-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org
[mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von bernd wilke
Gesendet: Freitag, 26. Juni 2015 10:25
An: typo3-german at lists.typo3.org
Betreff: Re: [TYPO3-german] OT jQuery: Nach .hide() zeigt .show() keinen
Inhalt mehr an

Am 26.06.15 um 08:26 schrieb Johannes C. Laxander:
> Hallo,
>
>
>
> der Betreff beschreibt das Problem schon ziemlich genau. Gibt es dafür 
> irgend einen Grund?
>
>
>
> Vereinfachte HTML Struktur:
>
>
>
> <div class="slider panel1">
>
>      <img ...>
>
>      <img ...>
>
>      <img ...>
>
> </div>
>
> <div class="slider panel2">
>
>      <img ...>
>
>      <img ...>
>
>      <img ...>
>
> </div>
>
>
>
> CSS Code:
>
>
>
> slider { display: block;}
>
>
>
> JavaScript Code:
>
>
>
> $("div[class*='slider']").hide();
>
> $("div[class*='slider']:first").show();
>
>
>
> /* Sichtbarkeit wechseln */
>
> $("div[class*='slider']").hide();
>
> $("div[class*='panel2']").show();
>
>
>
> Wenn ich nun mit JS über die Console im Chrome die Sichtbarkeit der 
> beiden Panels wechseln möchte wird zwar 'panel1' nicht mehr angezeigt,
'panel2'
> aber auch nicht (hat allerdings eine unbekannte Höhe).
>
>
>
> Eigenartig ist, dass, wenn ich ALLE vier Befehle über die Console im 
> Chrome ausführe, das Problem nicht auftritt.
>
>
>
> Gibt es dafür irgend eine Erklärung, oder noch besser eine Lösung!??

vielleicht gibt es eine racing condition? (das hide() hat noch nicht alle
Elemente versteckt, während das Show das eine schon sichtbar gemacht hat,
und sofort danach wird es vom noch laufenden hide wieder versteckt.

was mir auffällt ist die recht komplexe selektion. warum nicht einfach:

$('.slider').hide();
$('.slider:first').show();

/* Sichtbarkeit wechseln */
$('.slider').hide();
$('.panel2').show();

was jetzt aber nicht unbedingt so viel ändern sollte.

als Ausweg:

nicht alle verstecken, sondern nur das aktuell sichtbare. dafür dann eine
Klasse dynamisch vergeben:


$('.slider:first').show().addClass('active');

$('.slider.active').hide().removeClass('active');
$('.panel2').show().addClass('active');



bernd
-- 
http://www.pi-phi.de/cheatsheet.html
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list