2011-03-24 7 views
0

몇 가지 클래스가 있습니다 menu-item. menu-item 위에 마우스를 올리면 하위 메뉴가 항상 표시됩니다. 그러나 알 수 있듯이 sub-menuid=menu-item-2292에만 있습니다.jQuery에서 메뉴의 하위 메뉴 만 표시하는 방법?

<ul class="menu" id="menu-menu-principal"> 
    <li class="menu-item" id="menu-item-2289"><a href="/about">À propos</a></li> 
    <li class="menu-item" id="menu-item-2292"> 
     <a href="/photos">Photos</a> 
     <ul class="sub-menu"> 
     <li class="menu-item" id="menu-item-2296"><a href="/portrait">Portrait</a></li> 
     </ul> 
    </li> 
</ul> 

어떻게 menu-itemsub-menu이있는 sub-menu 경우에만 보여줄 것을 할 수 있습니까?

+0

되어 포함 된 하위 메뉴가 또는 변경 할 수있는 동일한 메뉴 항목이 될 것 li 선택한 세트를 줄이기 위해 has() 선택기를 사용할 수 있습니다. 그렇다면 어떻게 목록을 생성합니까? – Belinda

답변

2
$('.menu-item').hover(function(){ 
    var submenu = $(this).find('.sub-menu'); 
    if (submenu.length != 0) { 
    submenu.show(); 
    } 
}, function(){ 
    $(this).find('.sub-menu').hide(); 
}); 
+0

당신은 GENIUS입니다! 그것은 완벽. 고마워요 Shree – Steffi

+0

아, 미안, 작동하지 않습니다. 'menu-item'을 마우스로 내리면 하위 메뉴가 사라집니다 ... – Steffi

+0

should should it disappear? –

1

당신은 항상 ul

$(".menu-item").has('ul.sub-menu').hover(function() { 
    $('.sub-menu', this).show(); 
}, function() { 
    $('.sub-menu', this).hide(); 
}); 
+0

네, 좋아요. 하지만 이제는 문제가 있습니다 :'서브 메뉴 '위로 마우스를 가져 가려고했을 때, 이건 숨겨져 있습니다 ... 왜? 내 코드를 확인해 보라. $ (". menu-item"). ('ul.sub-menu') .hover ( function() {$ ('. function() {$ ('. sub-menu'). hide();} ), ' – Steffi

+0

CSS 스타일을 게시하십시오. 'show()'와'hide()'를'this'의 요소로 제한해야합니다. 내 게시물을 업데이트했습니다. – felixsigl

관련 문제