jQuery - ausblenden, wenn vorherige Element eine bestimmte Klasse hat
Frage
würde Ich mag alle class = "csc-content" verstecken, wo frühere Geschwister ist ein h4 class = "FAQ".
UPDATE Fehler: Ich denke, das ist falsch ... die vorherigen Geschwister nicht h4. Aber ich hoffe, Sie erhalten den Punkt, dass alle „Antwort“ wird ausgeblendet, wenn die „Frage“ die Klasse „faq“ hat / UPDATE
Dies ist der HTML:
<div id="centerCol-1">
<div id="c65" class="csc-default normal">
<div class="csc-header csc-header-n1"><h4 class="faq">FAQ question1</h4></div>
<div class="csc-content active"><p class="bodytext">Answer1</p></div>
</div>
<div id="c67" class="csc-default normal">
<div class="csc-header csc-header-n2"><h4 class="faq">FAQ question2</h4></div>
<div class="csc-content active"><p class="bodytext">Answer2</p></div>
</div>
<div id="c68" class="csc-default normal">
<div class="csc-header csc-header-n3"><h4>not FAQ</h4></div>
<div class="csc-content active"><p class="bodytext">Not an answer, just normal content</p></div>
</div>
</div>
jQuery sollte so etwas wie:
// find all outer divs with class csc-default in the div centerCol-1
// test if they contain a header div with an h4 class faq
// go to next element and hide it. Error... this should be parents next element?
$("#centerCol-1 .csc-default").find("h4").is(".faq").next(".csc-content").hide();
BR. Anders
Lösung
Sie müssen die benachbarten Selektor verwenden zusammen mit der : hat Selektor, wie folgt aus:
$('#centerCol-1 .csc-default .csc-header:has(.faq)+.csc-content').hide();
Andere Tipps
Moment mal, wollen Sie nur die Antwort div für jede FAQ Frage verbergen? Wenn also die h4
hat die Klasse .faq
, die div unmittelbar nach der Mutter div versteckt wird:
$("#centerCol-1 h4.faq").parent().next("div").hide();
Versuchen Sie folgendes:
$("#centerCol-1 .csc-content").filter(function() {
return $(this).prev().find(".faq").length > 0;
}).hide();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow