2011-03-24 9 views
0

私はいくつかのクラスを持っていますmenu-itemmenu-itemにマウスを重ねると、サブメニューが常に表示されます。 しかし、私たちが見る通り、sub-menuid=menu-item-2292にしかありません。 menu-itemsub-menuを持っている場合にのみ、私はsub-menuを表示することができますどのように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> 

+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

それは消えないはずですか? –

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(){$( '。sub-menu')。show();}、 function(){$( '。sub-menu')。hide();} ); – Steffi

+0

あなたのCSSスタイルを投稿してください。 'show()'と 'hide()'も 'this'の要素に制限する必要があります。 私の投稿を更新しました – felixsigl

関連する問題