2017-01-17 4 views
3

저는 몇 시간 동안이 방법을 사용하고 있습니다.하지만 어쨌든 나는 총 두뇌 방귀를 가지고있는 것 같습니다. 내가 원하는 것은 아이콘을 토글하고 패널을 위로 움직여 아코디언을 만드는 것입니다. 기본적으로 플러스로의 마이너스 변경은 작동하지만 특정 헤더를 클릭하면 전환되지 않습니다. https://jsfiddle.net/emd381md/11/아코디언 및 토글 아이콘에 문제가 있습니다.

답변

1

나는 전체 코드를 확인하지 않습니다 그러나 이것은 아마도 오류가 여기에 조금 미친 같습니다

$('.accordion-wrapper').on('click', function (e) { 
    e.stopPropagation(); 

    $(this).next('div.accordion-panel').stop(true, false, true).slideToggle(); 
    // $(this).find('.unalex-plus').toggleClass('glyphicon-plus glyphicon-minus'); 
    $('div.accordion-panel').not($(this).next('div.accordion-panel')).slideUp(); 

    if (!$(this).hasClass('active-panel')) { 
     $('.accordion-wrapper').find('.unalex-plus').removeClass('glyphicon-minus').addClass('glyphicon-plus'); 
     $(this).find('.unalex-plus').removeClass('glyphicon-plus').addClass('glyphicon-minus '); 
     $(this).addClass("active-panel"); 
    } else { 
     $('this').find('.unalex-plus').removeClass('glyphicon-minus').addClass('glyphicon-plus'); 
     $('.accordion-wrapper').find('.unalex-plus').removeClass('glyphicon-plus').addClass('glyphicon-plus'); 
     $(this).removeClass('active-panel'); 
    } 
}); 

이 내 바이올린은?

$('.accordion-wrapper').find('.unalex-plus').removeClass('glyphicon-plus').addClass('glyphicon-plus'); 

먼저 glyphicon-plus를 제거하고 나중에 추가하십시오.

3

다음은 작동 데모 https://jsfiddle.net/ju9L9rne/13/입니다.

문제는 if 문의 클래스 이름과 관련이 있습니다. 당신은 모든 accordians가 가지고있는 클래스 인 .unalex-plus을 사용하고있었습니다. 이것이 문제를 일으켰습니다.

그래서 나는 그 클래스를 .glyphicon-minus 또는 .glyphicon-plus 중 하나로 변경했습니다.

변경된 코드 :

if (!$(this).hasClass('active-panel')) { 
    $('.accordion-wrapper').find('.glyphicon-minus').removeClass('glyphicon-minus').addClass('glyphicon-plus'); 
    $(this).find('.glyphicon-plus').removeClass('glyphicon-plus').addClass('glyphicon-minus '); 
    $(this).addClass("active-panel"); 
    } else { 
    $('.accordion-wrapper').find('.glyphicon-minus').removeClass('glyphicon-minus').addClass('glyphicon-plus'); 
    $(this).find('.glyphicon-plus').removeClass('glyphicon-plus').addClass('glyphicon-minus'); 
    $(this).removeClass('active-panel'); 
    } 
+0

감사하지만이 문제는 부분적으로 해결되지만, 지금은 당신의 바이올린에서 제대로 토글 할 수 있지만 비활성 사용자는 플러스로 점프하지 않고 마이너스에서 머물러 있습니다 : ( – Elia

+0

https://jsfiddle.net/을 업데이트 함 ju9L9rne/4/나는 클래스 체인저 중 하나에 worng 클래스 이름을 넣었다. ** 편집 ** : 신경 쓰지 않고 첫 번째 accordian으로 문제를 해결한다. – Callum

3

나는 당신의 Fiddle을 편집했습니다.

그런 식으로 addClassremoveClass을 사용하지 마십시오. toggleClass은 더 나은 (더 읽기 쉬운) 솔루션입니다.

+0

omg 덕분에 해결되었다 : D <3 나는 정말로 고통 받고있는 것처럼 느껴진다. brainfart 지금 롤. – Elia