使用此树遍历遍历DOM?帮助JQuery

使用此树遍历遍历DOM?帮助JQuery,jquery,Jquery,我需要遍历DOM以选择.faq答案并在单击上显示它。faq问题a。我想我需要用“这个”,但我不知道下一步该怎么做 <div class="faq-question"> <?php // display a sub field value echo '<p>Question: &

我需要遍历DOM以选择.faq答案并在单击上显示它。faq问题a。我想我需要用“这个”,但我不知道下一步该怎么做

                    <div class="faq-question">
                        <?php
                        // display a sub field value
                            echo '<p>Question: </p>';
                            the_sub_field('faq_question');
                        ?>
                        <a href="#" class="";></a>
                    </div>
                    <div class="faq-answer"">
                        <?php
                        // display a sub field value
                            echo '<div class="faq-answer-answer">';
                            echo '<p>Answer: </p>';
                                the_sub_field('faq_answer');
                            echo '</div>';
                        ?>
                        <a href="#" class="";></a>
                    </div>

<script>
    $(document).ready(function(){
        $( ".faq-answer").hide();

        $( ".faq-question a" ).click(function() {
            $( ".faq-answer" ).toggle( "slide" );
        });
    });

</script>


由于
.faq-answer
.faq-question
的下一个兄弟元素,因此可以使用
parent()
进入问题div,然后使用
next()
进入答案div:

$( ".faq-question a" ).click(function() {
    $(this).parent().next().toggle( "slide" );
});
这显然有点脆弱;对HTML的小改动会破坏它。我们可以对第一位使用
最接近的
,而不是
父项()

同样,如果您可能想在问题和答案之间插入一个元素,我们可以通过查找第一个匹配元素来降低第二部分(
next()
)的脆弱性:

$( ".faq-question a" ).click(function() {
    $(this).closest(".faq-question").nextAll(".faq-answer").first().toggle( "slide" );
    // Find all following answers ---^                      ^
    // Take the first one (they'll be in order) ------------|
});
如果可能(并非总是如此),我喜欢在相关项目周围使用容器元素,如下所示:

<div class="qa-container">
    <div class="faq-question">
        <?php
        // display a sub field value
            echo '<p>Question: </p>';
            the_sub_field('faq_question');
        ?>
        <a href="#" class="";></a>
    </div>
    <div class="faq-answer"">
        <?php
        // display a sub field value
            echo '<div class="faq-answer-answer">';
            echo '<p>Answer: </p>';
                the_sub_field('faq_answer');
            echo '</div>';
        ?>
        <a href="#" class="";></a>
    </div>
</div>

哇,好帖子!顺便问一下,你知道为什么我的名声会下降吗?我对Stackoverflow还是个新手。@user3562836由于对上一个问题的否决票,你的声誉下降了。看见
<div class="qa-container">
    <div class="faq-question">
        <?php
        // display a sub field value
            echo '<p>Question: </p>';
            the_sub_field('faq_question');
        ?>
        <a href="#" class="";></a>
    </div>
    <div class="faq-answer"">
        <?php
        // display a sub field value
            echo '<div class="faq-answer-answer">';
            echo '<p>Answer: </p>';
                the_sub_field('faq_answer');
            echo '</div>';
        ?>
        <a href="#" class="";></a>
    </div>
</div>
$( ".faq-question a" ).click(function() {
    $(this).closest(".qa-container").find(".faq-answer").toggle( "slide" );
});