如果您实际显示和隐藏菜单(而不是添加和删除类),这是一个非常简单但有效的版本。我使用“not(thismenu)”来确保在单击新菜单时仅隐藏其他菜单。
$(document).ready(function() {
<!--**************************************************************************************-->
<!--*** Bind menubar items
<!--**************************************************************************************-->
$(".menubaritem").click(function(e){
var thismenu = $(this).find('.menubaroptions');
$('.menubaroptions').not(thismenu).slideUp("fast"); // hiding all other menus
thismenu.slideDown("fast");
e.stopPropagation();
});
<!--**************************************************************************************-->
<!--*** Bind menubar menu options (to hide current menu when option is clicked)
<!--**************************************************************************************-->
$(".menubaroption").click(function(e){
$(this).closest(".menubaroptions").slideUp("fast");
e.stopPropagation();
});
<!--**************************************************************************************-->
<!--*** Bind slideup to all menus on body click
<!--**************************************************************************************-->
$("body").click(function (e) { // binding onclick to body
$(".menubaroptions").slideUp("fast"); // hiding all menus
e.stopPropagation();
});
});
每个菜单栏项的 HTML 看起来像这样:
<td class='menubaritem clickable'>Menu Item<div class=menubararrow></div>
<div style='position:absolute;right:1px'>
<div class=menubaroptions>
include("menu-blah.php");
</div>
</div>
</td>
只是为了完成,这里是css
.menubaritem{height:26px;color:white;font-weight:normal;padding:2px 20px 2px 10px;white-space:nowrap;text-align:right;position:relative}
.menubaritem:hover{background-color:#404040;color:yellow}
.menubararrow{position:absolute;display:inline;margin-left:10px;float:right;margin-top:4px;border-left: 5px solid transparent;border-right: 5px solid transparent;border-top: 5px solid ".$primarytextcolour.}
.menubaritem:hover div.menubararrow{border-top: 5px solid white;}
.menubaroptions{border:1px solid white;display:none;position:relative;top:4px;background-color:rgba(0,0,0,0.80);color:white;min-width: 160px;box-shadow: 2px 2px 8px #888888;border-radius:4px;z-index:100}
.menubaroptions td{background-color:transparent;color: white;padding: 4px 10px;border:none;border-top:1px solid transparent;border-bottom:1px solid transparent}
.menubaroptions td.menubaroption:hover{background-color:grey;color:white;opacity:1;border-top:1px solid transparent;border-bottom:1px solid transparent}
.clickable{cursor:hand;cursor:pointer;pointer:hand;}