我有一个带有升级标记的常见问题解答,如下所示:
<p><strong>How can I come see the animals perform?</strong><br>
Schedules and information about attending a performance can be found here:</p>
<p><a href="http://jupmingdolphins.com">Performance tickets</a></p>
<p>If no performances are listed, it means that none are scheduled in the
near future. The animals take a break between November and May.</p>
<p><strong>What's the answer to this question?</strong><br>
It's 42, of course.</p>
<h2>Header for More Questions</h2>
<p><strong>Is it true the dolphins have smartphones?</strong><br>
Yes, they use Android phones and text each other constantly.</p>
<p><b>Just kidding!</b> They are all Apple fan-fish and prefer iPhones.</p>
(etc)
我想弄明白:
一些CSS(可能还有jQuery)在页面加载时隐藏除问题之外的所有内容。
简单的jQuery,当用户点击<strong>
- 包裹的问题时,答案会向下滑动并显示在其下方。问题是,正如你所看到的那样,标记是古怪的(归功于CMS)并且在一个问题和另一个问题之间可能有很多东西。答案不包含在他们自己的DIV或任何东西中。最重要的是,FAQ中有H2小标题,我不希望H2被触及/折叠。
所以我需要类似于点击操作的代码:
$('strong').click(function() {
// hide or reveal all elements from $(this) down,
// and stop when we hit next <strong> or <h2>
});
答案 0 :(得分:2)
修改
由于问题甚至没有自己的标签,因此非常复杂。因此,您处于需要隐藏问题的父标记的尴尬境地,但显示问题本身,这基本上是不可能的。
为了解决这个问题,here is a hack我把它放在了一起。它克隆问题并将它们添加到自己的标记中。但是,我建议尝试优先考虑这个标记的作者,将其修改为更合理的东西。
要隐藏非问题,您似乎可以使用以下内容:
$("#container").children().not($("strong").parent()).not("p").hide();
要显示答案,您可以使用nextUntil
:
$(this).parent().nextUntil($("strong").parent()).show();
<强> FIDDLE 强>