2012-02-12 5 views
0

일부 jquery menu 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