单击外部时 Superfish 扩展菜单不会关闭
Superfish expanded menu doesn't close when clicking outside
我有这个带有标记的扩展 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-expanded,类 和 superfish.js 把事情搞砸了。
它不是其他点击外部关闭的简化菜单的副本,因为它的行为要复杂得多。
对于任何对未来感兴趣的人,通过触发按钮以更简单的方式完成:
var $button = $('.navbar-toggle');
$(document).mouseup(function (e) {
if ($('#navbar-collapse').hasClass('in'))
{
$button.trigger("click");
}
});
我有这个带有标记的扩展 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-expanded,类 和 superfish.js 把事情搞砸了。
它不是其他点击外部关闭的简化菜单的副本,因为它的行为要复杂得多。
对于任何对未来感兴趣的人,通过触发按钮以更简单的方式完成:
var $button = $('.navbar-toggle');
$(document).mouseup(function (e) {
if ($('#navbar-collapse').hasClass('in'))
{
$button.trigger("click");
}
});