0

Для этого кода я хочу открыть один аккордеон и закрыть остальные, но когда я нажимаю на что-либо в первый раз, он открывает все аккордеоны. В последующие времена открывается только правильный.Мой код открывает все аккордеоны для скрипта

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

Если я нажимаю на cloz (1) его отображение 1, 2 и 3 в первый раз –

+0

Вы должны действительно использовать один класс, чтобы выбрать все эти элементы, а затем найти тот, который вы хотите по нему индексом. Таким образом, вы можете выполнить весь приведенный выше код в одной строке. –

+0

Создайте [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve). – smarx

ответ

1

Я думаю, вы можете немного упростить свой код. Прежде всего, если можно, используйте класс для всех ваших аккордеонов. Затем вы можете сделать что-то вроде этого:

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

Так вы первый закрыть все гармошки, а затем открыть тот, который вы хотите. Функция .eq (n) выбирает n элемент списка элементов.

+1

Хороший ответ, хотя это может быть единственная строка для сохранения доступа к DOM дважды - '$ ('. Accordion'). Collapse ('hide'). Eq (a) .collapse ('show');' –