より実行可能かもしれないCSSを介してこれを行う方法があります。
Red Team Design.comは、目標を達成するための非常に人気のある方法をいくつか投稿しています。
これは優れた例であり、便利なチュートリアルも提供します。ただし、絶対にjqueryを使用する必要がある場合(たとえば、これが何らかの割り当てである場合)、複雑なコードを避けるためにクリックイベントに固執しますが、これも本当に怠惰です:)
あなたは簡単にこのようなことをすることができます:
デモ: http: //jsfiddle.net/jrb9249/5n5Bp/4/
HTML:
<html>
<body>
<div class="div_parent">
<ul class="top_menu">
<li><a href="#">Home</a></li>
<li id="shop_li"><a href="#" onClick="javascript:mouseEvent('#shop_div')">Shop</a>
<div class="sub_div" id="shop_div">
<ul id="shopmenu" class="sub_menu">
<li>Electronics</li>
<li>Software</li>
<li>Mail-Order Brides</li>
<li>Insert bazaar product here</li>
</ul>
</div>
</li>
<li id="contact_li"><a href="#" onClick="javascript:mouseEvent('#contact_div')">Contact Us</a>
<div class="sub_div" id="contact_div">
<ul id="contactmenu" class="sub_menu">
<li>Email</li>
<li>Phone</li>
</ul>
</div>
</li>
</ul>
</div>
</body>
</html>
Javascript:
var anim;
$(document).click(function(event){
if(event.target.nodeName != 'LI' && (anim==0)){
$('.sub_div').fadeOut('fast');
};
});
anim = 0;
function mouseEvent(myid){
$('.top_menu li > div').each(function(){
$(this).fadeOut('fast');
});
anim = 1;
$(myid).fadeIn('fast', function(){
anim = 0;
});
};
CSS:
.div_parent
{
background:transparent;
padding:5px;
margin:0px;
float:left;
border:solid 1px gray;
}
.sub_div
{
paddin:0px;
margin:0px;
position:absolute;
margin-top:3px;
display:none;
}
.top_menu, .sub_menu
{
margin:0px;
padding:0px;
background:transparent;
}
.top_menu li
{
float: left;
display:inline;
margin:0px 5px 0px 5px;
}
a:link,a:active,a:visited
{
color:blue;
text-decoration:none;
}
a:hover
{
text-decoration:underline;
}
.sub_menu li
{
clear:both;
float:left;
background:#E2EDD5;
border:solid 1px white;
padding:2px;
width:150px;
}
.sub_menu li:hover
{
cursor:pointer;
background:#FFFFE8;
}
これは、jqueryのfadeOutアニメーション(単純)と変数「anim」を使用して、フォームを開くときと閉じるときの競合を回避します。そしてCSSはあなたのためにすべてを片付けます。このデモでは、可能な限りjqueryを使用しようとしました。お役に立てば幸いです。幸運を。