2

前の兄弟がh4class="faq"であるすべてのclass="csc-content"を非表示にします。

UPDATEエラー:これは間違っていると思います...前の兄弟はh4ではありません。ただし、「質問」のクラスが「よくある質問」/ 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。アンダース

4

3 に答える 3

6

次のように、隣接するセレクターを:hasセレクターと一緒に使用する必要があります。

$('#centerCol-1 .csc-default .csc-header:has(.faq)+.csc-content').hide();

デモ

于 2010-03-08T12:29:18.177 に答える
3

ちょっと待ってください、FAQの質問ごとに回答divを非表示にしたいだけですか?したがって、h4にクラスがある場合.faq、親divの直後のdivは非表示になります。

$("#centerCol-1 h4.faq").parent().next("div").hide();
于 2010-03-08T12:37:24.013 に答える
0

これを試して:

$("#centerCol-1 .csc-content").filter(function() {
  return $(this).prev().find(".faq").length > 0;
}).hide();
于 2010-03-08T12:31:25.397 に答える