네 - 당신이하고있는 것에 몇 가지 문제가있었습니다. 선택 자 .not ('active')이 활성 클래스를 찾지 못했습니다. 그러나 중요한 문제는 사용자가 이미 활성화 된 아코디언을 클릭하면 처리하지 못했다는 것입니다.
다음은 현재 패널이 활성 상태인지 확인합니다. 논리가 쉽지 않다면 활성 상태로 만들고 모두 열어 두었다가 열어 놓으십시오.
활성 패널을 클릭 한 경우 열린 패널이 열려 있는지 확인하고, 패널을 열지 않은 경우 패널이 열리지 않았는지 확인하십시오.
$('#accordion .panel-heading').click(function() {
if (!$(this).hasClass('active'))
{
// the element clicked was not active, but now is -
$('.panel-heading').removeClass('active');
$(this).addClass('active');
setIconOpened(this);
}
else
{
// active panel was reclicked
if ($(this).find('b').hasClass('opened'))
{
setIconOpened(null);
}
else
{
setIconOpened(this);
}
}
});
// create a function to set the open icon for the given panel
// clearing out all the rest (activePanel CAN be null if nothing is open)
function setIconOpened(activePanel) {
$('.panel-heading').find('b').addClass('closed').removeClass('opened');
if (activePanel)
{
$(activePanel).find('b').addClass('opened').removeClass('closed');
}
}
DEMO : http://www.bootply.com/0fHUqXpNn6#
참고 : 나는 당신이 실제로, 당신은 아마 다른 컨트롤이 이벤트를 설정해야합니다 클릭 콜백의 원인이됩니다 제목, 클릭,하지만 아코디언을 확장 할 수 없습니다 것으로 나타났습니다 실제 아코디언 클릭이 실행되지 않을 때 아이콘이 변경되는 것을 피하십시오.
너무 좋아? 너 잊어 버린 것 같아? – Labanino
아니요 - 그 기능의 마지막 문장은 당신과 약간 다릅니다 ... – caspian
잘하면 그것을 조금 더 명확하게 만드는 코멘트를 추가했습니다. – caspian