2016-05-09 3 views
0

У меня есть 3 кнопки, которые при нажатии обнуляются и отображается форма. Я хочу, если кто-то уже обрушился, тогда я хочу, чтобы он снова спрятался, если щелкнуть другого.Как скрыть свернутый элемент, если отображается еще один

Моя скрипка: https://jsfiddle.net/77soggnv/

Это мой JS код:

$(document).ready(function(){ 

    //See which panel has been clicked 
    $("#citizen").click(function(){ 
     $(this).data('clicked', true); 
    }); 
    $("#organisation").click(function(){ 
     $(this).data('clicked', true); 
    }); 
    $("#anonymous").click(function(){ 
     $(this).data('clicked', true); 
    }); 

    //Hide the other panels if one is clicked 
    if($("#citizen").data('clicked')){ 
     $("#organisation").collapse("hide"); 
     $("#anonymous").collapse("hide"); 
    } 
    if($("#organisation").data('clicked')){ 
     $("#citizen").collapse("hide"); 
     $("#anonymous").collapse("hide"); 
    } 
    if($("#anonymous").data('clicked')){ 
     $("#organisation").collapse("hide"); 
     $("#citizen").collapse("hide"); 
    }  

}); 
+0

Просто используйте переменную, чтобы сохранить текущее состояние, так что вы всегда знаете, если что-то рухнуло раньше. – Shilly

ответ

4

Просто вы можете сделать это нравится:

$(".btn").click(function(){ 
    $('.collapse.in').collapse('hide'); 
}); 

Updated Fiddle

+0

Это было прекрасно. Один элемент обрушивается, когда скрывается другой. Только то, что я искал. Что именно мы здесь делаем: '$ ('. Collapse.in')' ?? –

+0

@ FelixRosén _ (in) _ это КЛАСС, который добавляется, когда вы открываете свернутый div, чтобы идентифицировать его как открытый. свернутый div имеет (.collapse) класс, открытый div имеет (.collapse .in), таким образом мы принудительно сворачиваем все открытые div перед открытием тока. –

0

Поскольку щелкать элементы имеют общие имена классов и структуры, мы не должны придавать события отдельно.

$(".btn.btn-primary").click(function() { 
    var next = $(this).next(); 
    $(".collapse").not(next).slideUp(); 
    next.slideToggle(); 
}); 

Fiddle

next() метод возвращает элемент после текущего элемента.

+0

Это похоже работа. Но я действительно не понимаю, что вы здесь делаете. –

+0

@ FelixRosén проверить сейчас. –

Смежные вопросы