如何使用jQuery或CSS在特定元素之前获取下一个元素

Sai*_*hir 7 css jquery

我有一个结构:

<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-&nbsp; 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 &nbsp;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>
Run Code Online (Sandbox Code Playgroud)

我想做的是制作手风琴.所以,我说display : none所有ol, ul and p.faq-section ,所以我想在H4如何显示所有按照点击H4下一H4之前,所以所显示的下一H4之前的所有元素的元素,当点击就知道了.

kap*_*zak 5

如果你可以更改html标记,你可以将所有元素包装在div中,如下所示:

<h4>First</h4>
<div class='wrapper'>
 <p>Par</p>
 <ul>
   <li>list</li>
 </ul>
</div>
<h4>Second</h4>
.....
Run Code Online (Sandbox Code Playgroud)

并切换.wrapper元素的可见性.

jQuery的

如果您无法编辑标记,可以使用jquery nextUntil()函数:

$(document).on('click', 'h4', function() {
  $('ul, ol, p').removeClass('vis');
  $(this).nextUntil('h4').addClass('vis');
});
Run Code Online (Sandbox Code Playgroud)
p,ul,ol { display:none }
p.vis,ul.vis,ol.vis { display:initial }
Run Code Online (Sandbox Code Playgroud)
<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-&nbsp; 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 &nbsp;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>
Run Code Online (Sandbox Code Playgroud)


Lin*_*TED 5

在不更改标记的情况下,您可以使用以下nextUntil()函数:

CSS:

.faq-section>*:not(h4) {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

jQuery的

$(function() {
    $('.faq-section h4').on('click', function() {
        $(this).nextUntil('h4').toggle();
    });
});
Run Code Online (Sandbox Code Playgroud)

DEMO