这是您想要的示例。如果您将鼠标完全移出菜单,它只会隐藏菜单内容。这意味着如果您将鼠标移入菜单项选择,然后将鼠标移入菜单内容 div,它仍然会显示该菜单内容 div,而不仅仅是消失。这是通过将您想要隐藏和显示的内容以及菜单 li 项目本身放在一个容器中来实现的,并放置一个 mouseout 处理程序以仅隐藏该容器上的所有内容。所以菜单项 li 不再有任何 mouseout 处理程序,只有整个 divs + li 的容器(当您在单个 li 项上有一个 mouseout 处理程序时,这就是为什么您会得到您不希望内容一直消失的行为)。
此外,当您将鼠标悬停在它上面时,它会显示您想要的菜单项,然后如果您将鼠标移到另一个 li,当您从一个鼠标移到另一个时,它会隐藏所有其他菜单项,但显示您想要的菜单项,并且看起来很流畅。这是通过在项目之间隐藏所有项目来实现的(通过调用具有特定类的所有内容 div,例如“elem”)。并隐藏所有这些,然后通过使用菜单项名称的内容和要显示的元素的类名称之间的连接来显示当前选定的项目。例如,“elem foo”类的菜单内容div项,当我将鼠标悬停在html内容为“foo”的li项上时,“.elem”类的所有div菜单内容都被隐藏了,但显示类“foo”。
希望这可以帮助!
在这里工作 JSFIDDLE 演示
JS
$("div.another_container li").mouseenter(function(){
$(".elem").hide();
$("." + $(this).children("a").eq(0).html()).show();
});
$(".elem").hide();
$(".wrapper").mouseleave(function(){
$(".elem").hide();
});
HTML
<div class="container head">
some header
</div>
<div class="wrapper">
<div class="container">
<div class="sixteen columns">
<div class="another_container">
<ul class="menu">
<li><a href="#">foo</a></li>
<li><a href="#">bar</a></li>
</ul>
</div>
</div>
</div>
<div class="elem bar">
BAR blabla
</div>
<div class="elem foo">
FOO blabla
</div>
</div>
<div class="container footer">
some footer
</div>
CSS
.container .sixteen.columns{
width: 940px;
}
.container .column, .container .columns {
float: left;
display: inline;
margin-left: 10px;
margin-right: 10px;
}
.another_container ul {
height: 25px;
width: 100%;
margin: 0;
position: relative;
padding-top: 0px;
padding-left: 0;
padding-right: 0;
padding-bottom: 4px;
}
ol, ul {
list-style: none;
}
.another_container li:first-child {
margin-left: 0px !important;
}
.another_container li {
position: relative;
text-align: left !important;
float: left;
width: auto;
margin-left: 27px;
}
.elem {
display: none;
position: relative;
width: 100%;
height: 200px;
text-align: center;
float: left;
padding-bottom: 20px;
padding-left: auto;
padding-right: auto;
background-color: #f2f2f2;
border-style: solid;
border-color: red;
border-bottom-width: 2px;
}