我有带有标记的扩展的Superfish菜单:
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="true">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
和:
<div id="navbar-collapse" class="navbar-collapse collapse in" aria-expanded="true" style="">
<div class="region region-navigation-collapsible">
<section id="block-mainmenu" class="block block-superfish block-superfishmain clearfix">...</section></div></div>
我希望在菜单外部单击时关闭该菜单。
我尝试了以下jQuery代码:
var $menu = $('.menu');
var $button = $('.navbar-toggle');
$button.click(function () {
$menu.toggle();
});
$(document).mouseup(function (e) {
if (!$menu.is(e.target)
&& $menu.has(e.target).length === 0
&& !$button.is(e.target))
{
$menu.hide();
$button.addClass("collapsed");
$button.attr("aria-expanded","false");
$("#navbar-collapse").attr("aria-expanded","false");
$("#navbar-collapse").removeClass("in");
}
});
但是它不能正常工作。首先关闭它,然后在外面单击,然后再次单击它没有打开的按钮,它将关闭。 它是aria扩展的类和superfish.js弄乱了事情。
由于其行为要复杂得多,因此不能与其他在单击时关闭的简化菜单重复。