2015-05-04 47 views
7

特定元素之前下一个元素我有一个结构:如何获得使用jQuery或CSS

<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> 

我想要做的就是让手风琴。 所以我加display : none所有ol, ul and p.faq-section 所以我想知道什么时候点击h4如何显示在下一个h4之前点击h4之后的所有元素,以便显示下一个h4之前的所有元素。

+3

可能想看看在[ “创建具有HTML,CSS,和jQuery的的手风琴” ](http://inspirationalpixels.com/tutorials/creating-an-accordion-with-html-css-jquery) –

+0

对不起,我不能改变结构 –

回答

5

不改变你的标记,你可以使用nextUntil()功能:

CSS:

.faq-section>*:not(h4) { 
    display: none; 
} 

jQuery的

$(function() { 
    $('.faq-section h4').on('click', function() { 
     $(this).nextUntil('h4').toggle(); 
    }); 
}); 

DEMO

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-&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>

3
$("h4").click(function(){  
    $("p").hide(); 
    $("ul").hide(); 

    $(this).next("p").show(); 
    $(this).next("ul").show(); 
}) 
3

您可以使用此

$(function(){ 
    $("h4").on('click', function() { 
    $(this).nextUntil("h4").show(); 
    }) 
}); 

仅供参考,请检查该Reference

工作演示Demo

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-&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> 
    </div> 
</div> 

<script> 
    $(document).ready(function(){ 
     $(".accordion-header").click(function(){ 
      $(this).next().toggle(); 
     }); 
    }); 
</script> 

在这里看到一个例子: https://jsfiddle.net/kyfus4Ld/