0

Für diesen Code, ich meine ein Akkordeon zu öffnen und die restlichen zu schließen, aber wenn ich zum ersten Mal auf irgendetwas klicke, öffnet es alle Akkordeons. Anschließende Male öffnet es nur das richtige.Mein Code öffnet alle Akkordeons für das Skript

function cloz(a) { 
    if (a == 1) { 
    $("#myaccordion1").collapse('show'); 
    $("#myaccordion2").collapse('hide'); 
    $("#myaccordion3").collapse('hide'); 
    $("#myaccordion4").collapse('hide'); 
    $("#myaccordion5").collapse('hide'); 
    $("#myaccordion6").collapse('hide'); 
    } 
    if (a == 2) { 
    $("#myaccordion1").collapse('hide'); 
    $("#myaccordion2").collapse('show'); 
    $("#myaccordion3").collapse('hide'); 
    $("#myaccordion4").collapse('hide'); 
    $("#myaccordion5").collapse('hide'); 
    $("#myaccordion6").collapse('hide'); 
    } 
    if (a == 3) { 
    $("#myaccordion1").collapse('hide'); 
    $("#myaccordion2").collapse('hide'); 
    $("#myaccordion3").collapse('show'); 
    $("#myaccordion4").collapse('hide'); 
    $("#myaccordion5").collapse('hide'); 
    $("#myaccordion6").collapse('hide'); 
    } 
+0

Wenn ich auf cloz (1) klicke zeigt es 1, 2 und 3 zum ersten Mal –

+0

Sie sollten wirklich eine einzelne Klasse verwenden, um alle diese Elemente auszuwählen und dann den gewünschten Index zu finden. Auf diese Weise können Sie alle oben genannten Code in einer Zeile ausführen. –

+0

Erstellen Sie ein [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). – smarx

Antwort

1

Ich denke, Sie können Ihren Code ein wenig vereinfachen. Als erstes kannst du, wenn du kannst, eine Klasse für alle deine Akkordeons benutzen. Dann können Sie etwas tun:

function cloz(a) { 
    $('.accordion').collapse('hide'); 
    $('.accordion').eq(a).collapse('show'); 
} 

So schließen Sie zuerst alle Akkordeons, und öffnen Sie dann die eine, die Sie wollen. Die Funktion .eq (n) wählt das Element n einer Liste von Elementen aus.

+1

Schöne Antwort, obwohl es eine einzige Zeile sein könnte, um den Zugriff auf das DOM zweimal zu speichern - $ ('. Accordion'). Collapse ('hide'). Eq (a) .collapse ('show'); ' –

Verwandte Themen