我遇到了一些jquery菜单mouseenter问题。当鼠标输入p
,p
仍为display block
时如何修复?
<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>
答案 0 :(得分: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();
});
示例强>
答案 1 :(得分: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');
});
答案 2 :(得分:0)
最好以其他方式构建菜单,例如:
<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; }
添加到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');
});