2014-09-24 4 views
1

3 단계의 하위 메뉴가 필요합니다.다단계 클릭 서브 메뉴

처음에는 주요 지점 (men1, men2) 만 표시되어야합니다. 그런 다음 "men1"을 클릭하면 "men1.1 및 men 1.2"가 표시됩니다. "men1.2" "men1.2.1, men1.2.2 및 men 1.2.3"을 클릭하면 나머지는 보이지 않아야합니다.

"men2"를 클릭하면 다른 모든 하위 항목은 사라지고 "men2"만 사라집니다. 1 및 men2.2 "가 표시됩니다.

내가 무슨 뜻인지 알기를 바랍니다. 결국 모든 것은 광석을 확장하는 것과 같이 움직여야합니다!

이 내 진행입니다 지금까지
$(document).ready(function(){ 
 
    $('#navi ul').click(function(){ 
 
    $('#navi').find('.sub1').css('visibility', 'hidden'); 
 
    $(this).find('.sub1').css('visibility', 'visible'); 
 
    }); 
 
    $('#navi ul ul').click(function(){ 
 
    $('#navi').find('.sub2').css('visibility', 'hidden'); 
 
    $(this).find('.sub2').css('visibility', 'visible'); 
 
    }); 
 
});
.main { 
 
font-size: 2em; 
 
padding:1em 0 0 0; 
 
} 
 

 
.sub1 { 
 
    font-size:0.7em; 
 
    padding:0 0 0 1em; 
 
    visibility: hidden; 
 
} 
 

 
.sub2 { 
 
    font-size:0.7em; 
 
    padding:0.2em 0 1em 2em; 
 
    visibility: hidden; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="navi"> 
 
    <ul class="main"> 
 
    <li><a >men1</a> 
 
     <ul class="sub1"> 
 
     <li><a >men1.1</a> 
 
      <ul class="sub2"> 
 
      <li><a >men1.1.1</a></li> 
 
      <li><a >men1.1.2</a></li> 
 
      <li><a >men1.1.3</a></li> 
 
      </ul> 
 
     </li> 
 
     <li><a >men1.2</a> 
 
      <ul class="sub2"> 
 
      <li><a >men1.2.1</a></li> 
 
      <li><a >men1.2.2</a></li> 
 
      <li><a >men1.2.3</a></li> 
 
      </ul> 
 
     </li> 
 
     </ul> 
 
    </li> 
 
    </ul> 
 
    <ul class="main"> 
 
    <li><a >men2</a> 
 
     <ul class="sub1"> 
 
     <li><a >men2.1</a> 
 
      <ul class="sub2"> 
 
      <li><a >men2.1.1</a></li> 
 
      <li><a >men2.1.2</a></li> 
 
      <li><a >men2.1.3</a></li> 
 
      </ul> 
 
     </li> 
 
     <li><a >men2.2</a> 
 
      <ul class="sub2"> 
 
      <li><a >men2.2.1</a></li> 
 
      <li><a >men2.2.2</a></li> 
 
      <li><a >m2n2.2.3</a></li> 
 
      </ul> 
 
     </li> 
 
     </ul> 
 
    </li> 
 
    </ul> 
 
</div>

당신은 내가 배우고 때문에 나는 JQuery와 솔루션을 선호하는 레벨 1 클릭 할 때 레벨 3이 사라지고되지 볼 수 있습니다 그것은 쉽게 될 것으로 솔루션을 이해하고 있습니다.

희망을 보내주세요. 미리 감사드립니다.

+0

메뉴의 빈 공간을 피하기 위해 CSS 가시성보다는'show()'와'hide()'를 사용하고 싶을 것입니다. – isherwood

+0

그리고 SO에 오신 것을 환영합니다. – isherwood

답변

0

당신은 부모 요소에 대해 트리거에서 클릭을 방지하기 위해 세 번째 수준 요소에 전파를 중지해야합니다 :

.sub1 { 
    display: none; 
} 
.sub2 { 
    display: none; 
} 

공지 CSS에 대한 변경 페이지에서 빈 공간을 제거 할 수 있습니다.

$(document).ready(function() { 
    $('#navi > ul > li').click(function() { 
     $('#navi .sub1').not($(this).find('.sub1')).hide(); 
     $(this).find('.sub1').toggle(); 
    }); 
    $('#navi > ul ul > li').click(function (e) { 
     e.stopPropagation(); 
     $('#navi .sub2').not($(this).find('.sub2')).hide(); 
     $(this).find('.sub2').toggle(); 
    }); 
}); 

Demo

은 또한 슬라이드 효과를 언급했다. 여기에 a demo이 있습니다.

+0

빠른 해결책을 가져 주셔서 감사합니다! 레벨 3 하위 메뉴 (예 : men1.1.1)를 클릭하면 레벨 3이 사라지는 것을 인식했습니다. – user4075462

+0

예. 'stopPropagation()','preventDefault()', 또는 그 항목이 무엇에 달려 있는가에 따라 적절해야한다. – isherwood

+0

오 오케이 지금은이게 뭔지 배워야 해. 그것들은 bxslider를위한 네비게이션입니다. men1.1을 클릭하면 레벨 3이 열리고 men1.1을 다시 클릭하면 레벨 3이 사라지지 않습니다. 또한 레벨 3을 클릭해도 사라지지 않아야합니다. – user4075462