2016-12-09 20 views
1

Ich erstelle ein Bootstrap-Panel. Es hat 3 Panels. Tafel 1, Tafel 2, Tafel 3. Dieses Panel funktioniert normal.Wie blenden Sie Panels aus, wenn ein Bootstrap aktiv ist?

Meine Logik:

  • Wenn Panel 1 Klick, den Inhalt der Platte 1 mit beiden Panel 2, Panel 3 sollte verbergen.
  • Wenn Panel 2 klickt, zeigt es den Inhalt von Panel 2 mit beiden Panel 1, Panel 3 sollte ausblenden.
  • Wenn Panel 3 klicken, zeigt es den Inhalt von Panel 3 mit beiden Panel 1, Panel 2 sollte ausblenden.

enter image description here

, aber ich möchte auch den Raum nutzen. Das ist das aktive Panel sollte zuerst kommen. so kann ich den Raum auch beibehalten. (Alle aktiven Panel erste Position kommen sollte)

Dies ist meine vorhandenen Code:

HTML

<div class="container"> 
<div class="panel-group" id="accordion"> 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseOne"> 
      Panel #1<span class="glyphicon glyphicon-chevron-up"></span> 
     </a> 
     </h4> 
    </div> 
    <div id="collapseOne" class="panel-collapse collapse in"> 
     <div class="panel-body"> 
     panel 1 content 
     </div> 
    </div> 
    </div> 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"> 
      Panel #2 <span class="glyphicon glyphicon-chevron-up"></span> 
     </a> 
     </h4> 
    </div> 
    <div id="collapseTwo" class="panel-collapse collapse"> 
     <div class="panel-body"> 
     panel 2 content 
     </div> 
    </div> 
    </div> 
    <div class="panel panel-default"> 
    <div class="panel-heading"> 
     <h4 class="panel-title"> 
     <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseThree"> 
      Panel #3<span class="glyphicon glyphicon-chevron-down"></span> 
     </a> 
     </h4> 
    </div> 
    <div id="collapseThree" class="panel-collapse collapse"> 
     <div class="panel-body"> 
     panel 3 content 
     </div> 
    </div> 
    </div> 
</div> 
</div> 

Script:

$('.collapse').on('shown.bs.collapse', function(){ 
$(this).parent().find(".glyphicon-chevron-down").removeClass("glyphicon glyphicon-chevron-down").addClass("glyphicon glyphicon-chevron-up"); 
}).on('hidden.bs.collapse', function(){ 
$(this).parent().find(".glyphicon-chevron-up").removeClass("glyphicon glyphicon-chevron-up").addClass("glyphicon glyphicon-chevron-down"); 
}); 

Jeder Vorschlag, wie kann ich getan dies mit Bootstrap-Kollaps Panel?

+0

Ich glaube, Sie nicht die Reihenfolge der Platten mit bootsrap allein chnge können. Dazu benötigen Sie einige zusätzliche Javascript, um die Reihenfolge, in der die Panels angezeigt werden, – Max90

+0

beliebige Beispielskripte zu ändern? – user2986042

+0

Warum verwenden Sie keinen Bootstrap-Collapse JS-Compound: http://getbootstrap.com/javascript/#collapse-example-accordion – Dexter0015

Antwort

2

sollten die aktiven Panel erste Position kommen

Um die aktiven Registerkarte eine Lösung in jQuery ist in der ersten Position zu bewegen: Sie

$('#accordion').prepend($(this).closest('div.panel-default')); 

Während der Bewegung an der ersten Position kann die aktuelle Position des Panels speichern, wenn Sie also erneut auf das Panel klicken (das einzige sichtbare), können alle Panels angezeigt werden und das aktuelle Panel kann an der richtigen Stelle positioniert werden:

$(this).closest('div.panel-default') 
     .insertAfter($('div.container div.panel-default').eq(idx)) 

So, das Snippet ist:

$('.collapse').on('show.bs.collapse', function() { 
 
    $(this).parent().find(".glyphicon-chevron-down").removeClass("glyphicon glyphicon-chevron-down").addClass("glyphicon glyphicon-chevron-up"); 
 
    $(this).closest('div.panel-default').attr('idx', $(this).closest('div.panel-default').index()); 
 
    $('#accordion').prepend($(this).closest('div.panel-default')); 
 
    $('div.container div.panel-default').not($(this).closest('div.panel-default')).hide(); 
 
}).on('hide.bs.collapse', function() { 
 
    $(this).parent().find(".glyphicon-chevron-up").removeClass("glyphicon glyphicon-chevron-up").addClass("glyphicon glyphicon-chevron-down"); 
 
}); 
 

 
$('#accordion a.accordion-toggle').on('click', function (e) { 
 
    if ($('div.container div.panel-default:visible').not($(this).closest('div.panel-default')).length == 0) { 
 
    var idx = $(this).closest('div.panel-default').attr('idx'); 
 
    $('div.container div.panel-default').show(); 
 
    $(this).closest('div.panel-default').insertAfter($('div.container div.panel-default').eq(idx)) 
 
    } 
 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 

 

 
<div class="container"> 
 
    <div class="panel-group" id="accordion"> 
 
     <div class="panel panel-default"> 
 
      <div class="panel-heading"> 
 
       <h4 class="panel-title"> 
 
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseOne"> 
 
         Panel #1<span class="glyphicon glyphicon-chevron-up"></span> 
 
        </a> 
 
       </h4> 
 
      </div> 
 
      <div id="collapseOne" class="panel-collapse collapse in"> 
 
       <div class="panel-body"> 
 
        panel 1 content 
 
       </div> 
 
      </div> 
 
     </div> 
 
     <div class="panel panel-default"> 
 
      <div class="panel-heading"> 
 
       <h4 class="panel-title"> 
 
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo"> 
 
         Panel #2 <span class="glyphicon glyphicon-chevron-down"></span> 
 
        </a> 
 
       </h4> 
 
      </div> 
 
      <div id="collapseTwo" class="panel-collapse collapse"> 
 
       <div class="panel-body"> 
 
        panel 2 content 
 
       </div> 
 
      </div> 
 
     </div> 
 
     <div class="panel panel-default"> 
 
      <div class="panel-heading"> 
 
       <h4 class="panel-title"> 
 
        <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion" href="#collapseThree"> 
 
         Panel #3<span class="glyphicon glyphicon-chevron-down"></span> 
 
        </a> 
 
       </h4> 
 
      </div> 
 
      <div id="collapseThree" class="panel-collapse collapse"> 
 
       <div class="panel-body"> 
 
        panel 3 content 
 
       </div> 
 
      </div> 
 
     </div> 
 
    </div> 
 
</div>

+0

ok das funktioniert. Wie kann ich andere Div-Boxen verstecken, wenn ich auf eine andere klicke? bedeutet, wenn ich auf Panel 2 klicke, sollten sich Panel 1 und Panel 3 verstecken. Darf ich das machen ? Ich will die anderen DIV-Boxen nicht sehen. nur ich möchte die aktive DIV-Box sehen – user2986042

+0

@ user2986042 Anstatt vorgeben können Sie ausblenden verwenden. Aber wie stellst du dir vor, wieder das versteckte Panel 2 zu zeigen? – gaetanoM

+0

mein ziel: ich möchte das angeklickte panel nach oben verschieben und die anderen panels nicht anzeigen (display: keine). Wenn ich erneut klicke, möchte ich die erste Ansicht sehen (Standardansicht). kann ich mit div id's machen? – user2986042

Verwandte Themen