我想隐藏所有class =“csc-content”,其中前一个兄弟是h4 class =“faq”。
UPDATE 错误:我认为这是错误的...以前的兄弟姐妹不是h4。但我希望你明白,如果“问题”有“faq”类,那么所有“答案”都将被隐藏 / UPDATE
这是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应该是这样的:
// 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。安德斯
答案 0 :(得分:6)
您需要使用adjacent选择器和:has选择器,如下所示:
$('#centerCol-1 .csc-default .csc-header:has(.faq)+.csc-content').hide();
答案 1 :(得分:3)
坚持,您只想隐藏每个常见问题解答的答案div?因此,如果h4
具有类.faq
,则父div之后的div将被隐藏:
$("#centerCol-1 h4.faq").parent().next("div").hide();
答案 2 :(得分:0)
试试这个:
$("#centerCol-1 .csc-content").filter(function() {
return $(this).prev().find(".faq").length > 0;
}).hide();