2013-04-08 5 views
1

숫자 또는 상위 항목으로 구성된 기본 메뉴가 있습니다. 우리는 모든 어린이 UL이 숨겨지기를 원합니다. 그러면 주어진 UL을 클릭하면 어린이 UL이 보여줍니다.jQuery 목록 항목 메뉴

이 여기 정도 작업을 볼 수 있습니다 http://jsfiddle.net/JnL58/12/

$("ul.nav_categories ul").hide(); 

$("ul.nav_categories li").click(function(el){ 
    el.preventDefault(); 
    var cur_el = $("> ul", this); 
    if (cur_el.length > 0) { 
     $("> ul", this).show(); 
    } 
}); 

우리가 클릭 된 요소의 부모 UL의에서 관련 UL의 APART을 숨기거나 UL의 형제입니다 고민하고있는 일을.

그래서 기본적으로 자사의 롤오버보다는 클릭 작동이 http://jsfiddle.net/FjCcT/4/ 같은 드롭 다운 메뉴 :

$("ul.nav_categories ul").hide(); 
$("ul.nav_categories li").hover(function(){ 
    if ($("> ul", this).length > 0) { 
     $("> ul", this).show(); 
    } 
}, function(){ 
    if ($("> ul", this).length > 0) { 
     $("> ul", this).hide(); 
    } 
}); 

다양한 수준의 작업이 필요, 예를 들어 2, 3, 4, 5 개 항목 깊은 가능성을 유의하시기 바랍니다 . 목록은 동적이므로 레벨 수를 알 수 없습니다.

+1

을 작동하지 않습니다 무엇? – adeneo

+0

'$ ("ul.nav_categories ul") hide();'는 CSS의'ul.nav_categories ul {display : none;} '으로 대체되어야합니다. – Shikiryu

+0

adeneo - 첫 번째 바이올린에서 다른 li을 클릭하면 ul을 숨길 필요가 있으므로 목록을 한 번에 하나씩 만 표시합니다. – paulcripps

답변

1

총 편집. 물론 솔루션은 매우 간단해야합니다. : 첫 번째 바이올린에 3

$("ul.nav_categories ul").hide(); 

$("ul.nav_categories li").click(function(){ 
    $('li > ul').not($(this).parents('ul')).hide(); 
    $(this).find('> ul').show(); 
    return false; 
}); 

http://jsfiddle.net/Bhnzc/3/

+0

중첩 된 메뉴가 jsfiddle에서 클릭으로 열리지 않습니다. –

+0

그건 그냥 이상한 .. 업데이트 된 것입니다. – Kaloyan

+0

거의 작동합니다. "하위 페이지 A (하위 항목 있음)"를 두 번째 클릭하면 해당 노드를 닫아야합니다. :? –

관련 문제