これがあなたが望む例です..それはあなたがメニューから完全にマウスを外した場合にのみメニューの内容を非表示にします。つまり、メニュー項目の選択にマウスを合わせてから、メニューコンテンツのdivにマウスを合わせると、メニューコンテンツのdivが表示され、消えるだけではありません。これは、非表示にして表示するコンテンツとメニューliアイテム自体を1つのコンテナー内に配置し、mouseoutハンドラーを配置してそのコンテナー上でのみすべてを非表示にすることで実現されます。そのため、メニュー項目liにはマウスアウトハンドラーがなくなり、全体的なdiv + liのコンテナーのみが含まれます(個々のli項目にマウスアウトハンドラーがあった場合、コンテンツが常に消えてしまう場所に望まない動作が発生したのはそのためです)。
また、マウスを重ねると必要なメニュー項目が表示され、別のliにマウスを合わせると、他のすべての項目が非表示になりますが、必要なものを表示するとスムーズに表示されます。これは、アイテム間をマウスで移動したときにすべてのアイテムを非表示にすることで実現されます(「elem」など、特定のクラスですべてのコンテンツdivを呼び出すことにより)。そしてそれらすべてを非表示にしますが、メニュー項目名の内容と表示する要素のクラス名の間の接続を使用して、現在選択されている項目を表示します。たとえば、クラス「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;
}