먼저 렌더링을 보여드리겠습니다.
먼저 페이지 코드를 보면 목록이 중첩되어 있습니다.
<div id="menuDiv"> <ul id="menu"> <li class="parentLi"> <span>B</span> <ul class="childrenUl"> <li class="childrenLi"><span>C</span></li> <li class="childrenLi"><span>C</span></li> <li class="childrenLi"><span>C</span></li> </ul> </li> <li class="parentLi"> <span>B</span> <ul class="childrenUl"> <li class="childrenLi"><span>C</span></li> <li class="childrenLi"><span>C</span></li> <li class="childrenLi"><span>C</span></li> </ul> </li> <li class="parentLi"> <span>B</span> <ul class="childrenUl"> <li class="childrenLi"><span>C</span></li> <li class="childrenLi"><span>C</span></li> <li class="childrenLi"><span>C</span></li> </ul> </li> </ul> </div>
CSS 코드는 주로 하위 메뉴의 배경색과 왼쪽 테두리 스타일을 설정하고, 플로팅 및 선택 스타일을 설정하고, 하위 메뉴가 표시되지 않도록 설정하기 시작합니다(js 설정을 통해 클릭 후 표시).
#menuDiv{ width: 200px; background-color: #029FD4; } .parentLi { width: 100%; line-height: 40px; margin-top: 1px; background: #1C73BA; color: #fff; cursor: pointer; font-weight:bolder; } .parentLi span { padding: 10px; } .parentLi:hover, .selectedParentMenu { background: #0033CC; } .childrenUl { background-color: #ffffff; display: none; } .childrenLi { width: 100%; line-height: 30px; font-size: .9em; margin-top: 1px; background: #63B8FF; color: #000000; padding-left: 15px; cursor: pointer; } .childrenLi:hover, .selectedChildrenMenu { border-left: 5px #0033CC solid; background: #0099CC; padding-left: 15px; }
다음은 클릭 이벤트에 대한 코드입니다.
$(".parentLi").click(function(event) { $(this).children('.childrenUl').slideToggle(); }); $(".childrenLi").click(function(event) { event.stopPropagation(); $(".childrenLi").removeClass('selectedChildrenMenu'); $(".parentLi").removeClass('selectedParentMenu'); $(this).parents(".parentLi").addClass('selectedParentMenu'); $(this).addClass('selectedChildrenMenu'); });
중첩된 목록으로 인해 이벤트가 버블링될 수 있으므로 버블링은 하위 메뉴의 클릭 이벤트인 event.stopPropagation();에서 구성되어야 합니다.
위 코드는 아주 간단하고, 코드는 그냥 주석으로, jquery 아코디언 메뉴를 구현한 것입니다. 도움이 필요한 친구들이 와서 참고할 수 있습니다.