이전 목록 다음
채택완료

아코디언 메뉴 질문입니다!

2017-11-01 (수) 14:45:18 7,107

위에 그림처럼 아코디언 메뉴인데요.

항상 첫번째 탭 서브부분이 열려있는 상태입니다.

열려있지 않게 하려면 소스 수정을 어떻게 해야하나요?

Copy
<h3>아코디언메뉴</h3>
<div class="d4 ex">
 <nav class="menu">
        <ul>
            <li class="active"><a href="#" class="m">MENU1</a>
                <div class="sub">1-서브메뉴영역<br>1-서브메뉴영역<br>1-서브메뉴영역<br>1-서브메뉴영역<br></div>
            </li>
            <li><a href="#" class="m">MENU2</a>
                <div class="sub">2-서브메뉴영역<br>2-서브메뉴영역<br>2-서브메뉴영역<br>2-서브메뉴영역<br></div>
            </li>
            <li><a href="#" class="m">MENU3</a>
                <div class="sub">3-서브메뉴영역<br>3-서브메뉴영역<br>3-서브메뉴영역<br>3-서브메뉴영역<br></div>
            </li>
            <li><a href="#" class="m">MENU4</a>
                <div class="sub">4-서브메뉴영역<br>4-서브메뉴영역<br>4-서브메뉴영역<br>4-서브메뉴영역<br></div>
            </li>
        </ul>
    </nav>
</div>
<style>
.d4{ height:400px;}
</style>
<script>
// .d4 .menu li .m을 클릭함.
$(".d4 .menu li .m").click(function(){
 var i = $(this);
 var s = i.siblings(".sub");
 var dis = s.css("display");
 // 만약 변수 dis의 값이 block과 같다면 => 즉 내가 클릭한 대상이 현재 열려있다면
 if(dis=="block"){
  i.parent("li").removeClass("active");
  s.slideUp(300);
  }
 // 만약 변수 dis의 값이 none과 같다면 => 즉 내가 클릭한 대상이 현재 닫혀있다면
 if(dis=="none"){
  $(".d4 .menu li").removeClass("active");
  i.parent("li").addClass("active");
  $(".d4 .menu li .sub").slideUp(300);
  s.slideDown(300);
  }
 return false;
 });
</script>

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

이걸 추가해보세요

$(function() {
    $(".active").slideUp(300);
});

답변에 대한 댓글 1개

안되요 ㅠㅠ

첫번째 <li class="active"> 에서 class="active" 삭제해보세요.

답변에 대한 댓글 1개

클래스에 관한 css만 사라지고, 계속 열려있습니다.

답변을 작성하려면 로그인이 필요합니다.