$(document).ready(function(){
$("body").append("<div id='popmenu' style='position:absolute;display:none;'><div class='lt'><span class='rt'></span></div><div class='cm'></div><div class='lb'><span class='rb'></span></div></div>")
$popmenu=false;
$("#topMenu li .icon").hover(function(){$(this).addClass("hover");$popmenu?showPopMenu($(this),$("#div"+$(this).attr("id")).html(),$("#popmenu"),{x:-70,y:21}):null},function(){$(this).removeClass("hover");}).click(function(){if(!$popmenu){showPopMenu($(this),$("#div"+$(this).attr("id")).html(),$("#popmenu"),{x:-70,y:21});$popmenu=true;}else{hidePopMenu($("#popmenu"));$popmenu=false;}});
});
function showPopMenu($clicked,$menuhtml,$menu,pos){
$menu.find(".cm").html($menuhtml);
$menu.css("top",$clicked.offset().top+pos.y).css("left",$clicked.offset().left+pos.x).slideDown("normal");
$("body").bind("click", {obj:$clicked}, handler);
function handler(event){if(event.target.id!=event.data.obj.attr("id")&&$popmenu){hidePopMenu($("#popmenu"));$popmenu=false;}}
}
function hidePopMenu($menu){
$menu.slideUp("fast");
$("body").unbind("click");
}
这里$("#topMenu li .icon")即是对菜单的访问,而hover事件根据$popmenu属性判断是否应该自动展开相应的菜单,在showPopMenu中对body绑定了事件,需要判断是否在菜单外被点击了,如果是,则收回菜单
