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