我有一个结构:
<div class="faq-section">
<h4>1. Wie reserviere ich mir einen Platz, wenn ich einen Gutschein habe?</h4>
<p>Es gibt für Gutscheinbesitzer 2 Wege um sich einen Platz am Himmel bei uns zu reservieren.</p>
<ul>
<li>Sie können sich telefonisch Mo-Fr 09.00-17.00 Uhr unter <strong>056 667 27 08 </strong>oder</li>
<li>Sie nutzen unser elektronisches Reservationsformular, welches Sie <a title="Reservation" href="34-0-Reservation.html"> hier </a>finden.</li>
</ul>
<h4>2. Wie lange dauert eine Ballonfahrt?</h4>
<p>Je nach Angebot das Sie wählen hat eine Ballonfahrt unterschiedliche Dauer in der Luft. Der Ablauf VOR- und NACH- der Ballonfahrt ist jedoch immer der Selbe.</p>
<ol>
<li>Fahrt vom Treffpunkt zum Startplatz (ca. 0,5 h)</li>
<li>Aufbau des Ballons vor dem Start (ca. 0,5 h)</li>
<li>Fahrt mit dem Heissluftballon (je nach Ihrer Wahl der Ballonfahrt )</li>
<li>Verpacken des Ballons nach der Landung und Ballonfahrertaufe mit Champagner und persönlichem Zertifikat (ca. 0,5 h) </li>
<li>kostenlose Rückfahrt vom Landeplatz zum Ausgangspunkt (ca. 0,5 h)</li>
</ol>
</div>
我想做的是制作手风琴。
所以我向display : none
中的所有ol, ul and p
添加了.faq-section
所以我想知道点击h4时如何在下一个h4之前显示点击的h4之后的所有元素,以便显示下一个h4之前的所有元素。
答案 0 :(得分:5)
如果您可以更改html标记,则可以将所有元素包装在div中,如下所示:
<h4>First</h4>
<div class='wrapper'>
<p>Par</p>
<ul>
<li>list</li>
</ul>
</div>
<h4>Second</h4>
.....
并切换.wrapper
元素的可见性。
<强>的jQuery 强>
如果您无法编辑标记,可以使用jquery nextUntil()
函数:
$(document).on('click', 'h4', function() {
$('ul, ol, p').removeClass('vis');
$(this).nextUntil('h4').addClass('vis');
});
p,ul,ol { display:none }
p.vis,ul.vis,ol.vis { display:initial }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="faq-section">
<h4>1. Wie reserviere ich mir einen Platz, wenn ich einen Gutschein habe?</h4>
<p>Es gibt für Gutscheinbesitzer 2 Wege um sich einen Platz am Himmel bei uns zu reservieren.</p>
<ul>
<li>Sie können sich telefonisch Mo-Fr 09.00-17.00 Uhr unter <strong>056 667 27 08 </strong>oder</li>
<li>Sie nutzen unser elektronisches Reservationsformular, welches Sie <a title="Reservation" href="34-0-Reservation.html"> hier </a>finden.</li>
</ul>
<h4>2. Wie lange dauert eine Ballonfahrt?</h4>
<p>Je nach Angebot das Sie wählen hat eine Ballonfahrt unterschiedliche Dauer in der Luft. Der Ablauf VOR- und NACH- der Ballonfahrt ist jedoch immer der Selbe.</p>
<ol>
<li>Fahrt vom Treffpunkt zum Startplatz (ca. 0,5 h)</li>
<li>Aufbau des Ballons vor dem Start (ca. 0,5 h)</li>
<li>Fahrt mit dem Heissluftballon (je nach Ihrer Wahl der Ballonfahrt )</li>
<li>Verpacken des Ballons nach der Landung und Ballonfahrertaufe mit Champagner und persönlichem Zertifikat (ca. 0,5 h) </li>
<li>kostenlose Rückfahrt vom Landeplatz zum Ausgangspunkt (ca. 0,5 h)</li>
</ol>
</div>
答案 1 :(得分:5)
在不更改标记的情况下,您可以使用nextUntil()
函数:
CSS:
.faq-section>*:not(h4) {
display: none;
}
的jQuery
$(function() {
$('.faq-section h4').on('click', function() {
$(this).nextUntil('h4').toggle();
});
});
答案 2 :(得分:3)
$("h4").click(function(){
$("p").hide();
$("ul").hide();
$(this).next("p").show();
$(this).next("ul").show();
})
答案 3 :(得分:3)
你可以用这个
$(function(){
$( "h4" ).on('click', function() {
$(this).nextUntil( "h4" ).show();
})
});
如需参考,请查看Reference
工作演示Demo
答案 4 :(得分:3)
你可以试试这个:
<div class="faq-section">
<div class="accordion">
<h4 class="accordion-header" style="cursor:pointer;">1. Wie reserviere ich mir einen Platz, wenn ich einen Gutschein habe?</h4>
<div class="collapsible" style="display:none">
<p>Es gibt für Gutscheinbesitzer 2 Wege um sich einen Platz am Himmel bei uns zu reservieren.</p>
<ul>
<li>Sie können sich telefonisch Mo-Fr 09.00-17.00 Uhr unter <strong>056 667 27 08 </strong>oder</li>
<li>Sie nutzen unser elektronisches Reservationsformular, welches Sie <a title="Reservation" href="34-0-Reservation.html"> hier </a>finden.</li>
</ul>
</div>
</div>
<div class="accordion">
<h4 class="accordion-header" style="cursor:pointer;">2. Wie lange dauert eine Ballonfahrt?</h4>
<div class="collapsible" style="display:none">
<p>Je nach Angebot das Sie wählen hat eine Ballonfahrt unterschiedliche Dauer in der Luft. Der Ablauf VOR- und NACH- der Ballonfahrt ist jedoch immer der Selbe.</p>
<ol>
<li>Fahrt vom Treffpunkt zum Startplatz (ca. 0,5 h)</li>
<li>Aufbau des Ballons vor dem Start (ca. 0,5 h)</li>
<li>Fahrt mit dem Heissluftballon (je nach Ihrer Wahl der Ballonfahrt )</li>
<li>Verpacken des Ballons nach der Landung und Ballonfahrertaufe mit Champagner und persönlichem Zertifikat (ca. 0,5 h) </li>
<li>kostenlose Rückfahrt vom Landeplatz zum Ausgangspunkt (ca. 0,5 h)</li>
</ol>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$(".accordion-header").click(function(){
$(this).next().toggle();
});
});
</script>
见这里的一个例子: https://jsfiddle.net/kyfus4Ld/