2012-02-12 15 views
0

私はいくつかのjqueryメニューmouseenterの問題に会った。マウスをpと入力すると、pはまだdisplay blockになります。メニュー内のjquery mouseenter mouseout

<script> 
$(document).ready(function() { 
    $('a').mouseenter(function(){ 
     $('p').css('display','none'); 
     $(this).next('p').slideDown('slow'); 
    }).mouseleave(function(){ 
     $('p').slideUp('slow'); 
    }); 
    $('p').mouseenter(function(){ 
     $(this).css('display','block'); 
    });​ 
}); 
</script> 
<div> 
    <a>menu1</a> 
    <p>about us</p> 
    <a>menu2</a> 
    <p>contact</p> 
</div> 
<style> 
div{ 
    position:relative; 
    z-index:0; 
    width:600px; 
    height:20px;  
} 
p{ 
    display:none; 
    position:absolute; 
    top:20px; 
    left:0; 
    width:300px; 
    height:100px; 
    background:#ccc; 
}​ 
</style> 
​ 

ライブデモ:

<ul class="menu"> 
     <li>item 
      <ul> 
       <li>sub item</li> 
       <li>sub item</li> 
       <li>sub item</li> 
      </ul> 
     </li> 
    </ul> 

とに.menu li ul { display: none; }を追加します。屋のためにそれを修正http://jsfiddle.net/KTvf7/

答えて

0

..

$('a').mouseenter(function(){ 
    $('p').css('display','none'); 
    $(this).next('p').slideDown('slow');}); 
$('p').mouseleave(function(){ 
    $('p').slideUp('slow'); 
}); 
$('p').mouseenter(function(){ 
    $(this).css('display','block'); 
}); 
+0

(1) '$( 'P')のMouseEnter(関数(){$(この)の.css( '表示'、 'ブロック')。 $(this).show(); }); 'は何もしません(' p 'は別のブロックであり、そうでなければ表示できません)。 (2)ユーザが 'a'要素からメニューを離れる場合、' p'はまだ表示されます。 – ori

+0

私はあなたに同意するだろう...急いで私の間違い.. $(this).show();上記のコードでは役に立たない – Alexander

0

それは次のように、そうでない場合は、あなたのメニューを構築する方が良いでしょうCSS。

この構造では、.menu > liの入力と退出は素晴らしいです。


あなたはまだあなたの構造に固執する場合は、あなただけのコンテナにmouseleaveを添付することができます。私はこのfiddleでそれをクラス.menuを与えた:

$('.menu a').mouseenter(function(){ 
    $('.menu p').css('display', 'none'); 
    $(this).next('p').slideDown('slow'); 
}) 

$('.menu').mouseleave(function(){ 
    $('p', this).slideUp('slow'); 
}); 
1

は、なぜあなたは<ul>を使用していませんか?私はそれがあなたがやろうとしていることの方が良いと思う。

HTML:

<ul> 
    <li> 
     <a href="#">Menu One</a> 
     <p>About Us</p> 
    </li> 
    <li> 
     <a href="#">Menu Two</a> 
     <p>Contact Us</p> 
    </li>  
</ul> 

CSS:

li { float: left; padding: 0 2em; } 
p { 
    height: 100px; 
    background: red; 
    padding: 0 2em; 
    display: none; 
    position: absolute; 
} 

jQの:

$('li').hover(function(){ 
    $(this).find('p').stop(true, true).slideDown(); 
}, function(){ 
    $(this).find('p').stop(true, true).slideUp(); 
}); 

試験。PLE

jsFiddle

関連する問題