2017-02-15 2 views
0

Ich möchte eine Liste mit Bootstrap machen, wo immer das letzte geklickte Listenelement kollabiert ist. Im Anschluss an den Code aus https://www.w3schools.com/Bootstrap/tryit.asp?filename=trybs_collapsible_accordion&stacked=h:Bootstrap - wie man eines der Listenelemente immer kollabiert macht

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/> 
 
<div class="panel-group" id="accordion"> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
      <a data-toggle="collapse" data-parent="#accordion" href="#collapse1">Collapsible Group 1</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse1" class="panel-collapse collapse in"> 
 
     <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 
 
    </div> 
 
    </div> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
      <a data-toggle="collapse" data-parent="#accordion" href="#collapse2">Collapsible Group 2</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse2" class="panel-collapse collapse"> 
 
     <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 
 
    </div> 
 
    </div> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
      <a data-toggle="collapse" data-parent="#accordion" href="#collapse3">Collapsible Group 3</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse3" class="panel-collapse collapse"> 
 
     <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 
 
    </div> 
 
    </div> 
 
</div>

wenn zusammenklappbarer Gruppe 1 angeklickt wird, dann keines der Listenelemente ausgeblendet ist. Ich möchte, dass ein Element angeklickt wird, es kann nicht dekomprimiert werden. Ein Objekt sollte nur dann dekomprimiert werden, wenn ein anderes Listenelement ausgewählt ist. Wie kann ich sicherstellen, dass das zuletzt angeklickte Objekt immer minimiert wird, wenn also erneut geklickt wird, wird es nicht aufgelöst?

+0

genehmigen den Bearbeitungs Code in einen Code-Schnipsel zu konvertieren oder eine Geige bitte hinzufügen. – TheDarkKnight

+2

einfachste Weg, die PLGIN hier zu verwenden: https://jqueryui.com/accordion – techhunter

+0

Das Verhalten des Elements ist auf Bootstrap zu definieren. Wenn Sie etwas anders machen müssen, müssen Sie Ihr eigenes Javascript erstellen, das es einstellt oder nicht. – Forklift

Antwort

1

helfen. Aus den Kommentaren zu der Frage, Es klingt wie das Jquery ist in Ordnung, zu verwenden? (Geben Sie andernfalls eine Sprache an)

Ich verwende event.stopPropagation();, um zu verhindern, dass das Ereignis zu den standardmäßigen Bootstrap-Ereignis-Listenern übergeht.

$(document).ready(() => { 
 
    $("[data-toggle='collapse']").click(function(event) { 
 
    var index = $(this).index("[data-toggle='collapse']"); 
 
    if ($(".panel-collapse:eq(" + index + ")").is(":visible")) event.stopPropagation() 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 

 
<div class="panel-group" id="accordion"> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse1">Collapsible Group 1</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse1" class="panel-collapse collapse in"> 
 
     <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 
 
    </div> 
 
    </div> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse2">Collapsible Group 2</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse2" class="panel-collapse collapse"> 
 
     <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 
 
    </div> 
 
    </div> 
 
    <div class="panel panel-default"> 
 
    <div class="panel-heading"> 
 
     <h4 class="panel-title"> 
 
     <a data-toggle="collapse" data-parent="#accordion" href="#collapse3">Collapsible Group 3</a> 
 
     </h4> 
 
    </div> 
 
    <div id="collapse3" class="panel-collapse collapse"> 
 
     <div class="panel-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div> 
 
    </div> 
 
    </div> 
 
</div>

+0

Ich bin ein Anfänger in Web-Entwicklung, nur mit Angular 2 und Bootstrap gestartet, nicht sicher, ob dies ein ist Problem, aber verwendet Ihren Code in meinem Projekt (in index.html Datei) und es funktioniert nicht, kann nicht verstehen, warum – user1680859

+0

@ user1680859 Nun, wenn Sie angular2 verwenden, wo sind Sie puitting den Code, in einem '.js' oder' .ts' Datei? Funktioniert es einfach nicht, oder wirft es Fehler? – Zze

+0

der Code ist in .ts, aber ich habe Ihren Code in der Datei index.html, in der Teil, in einem Skript-Tag, vielleicht ist dies das Problem? – user1680859

Verwandte Themen