【问题标题】:Close div on click or tab outside在外部单击或选项卡时关闭 div
【发布时间】:2015-10-21 23:43:43
【问题描述】:

我在页眉中有一个非常标准的弹出菜单。规范说用户需要能够以三种方式关闭它:

  1. 在菜单外点击
  2. 点击第二次展开的链接(滑动切换)
  3. 通过在菜单外按标签

我有第一个工作,但我似乎无法弄清楚其他两个。当您再次单击该链接时,它会向上滑动,然后再向下滑动。而且我尝试使用 jquery“focusout”在用户退出时关闭菜单,但没有运气。

这是我的 js:

$("#body").mouseup(function (e) {
    var subject = $("#shell-user-account-details");
    if (e.target.id != subject.attr('id') && !subject.has(e.target).length) {
        subject.hide();
    }
    $("#shell-user-account-details").attr('aria-hidden', function (i, attr) {
        return attr == 'true' ? 'false' : 'true';
    }).attr('aria-expanded', function (i, attr) {
        return attr == 'false' ? 'true' : 'false';
    });
});

$(document).on('click', '#shell-user-account-link', function (event) {
    $('#shell-user-account-details').slideToggle().attr('aria-expanded', function (i, attr) {
        return attr == 'false' ? 'true' : 'false';
    }).attr('aria-hidden', function (i, attr) {
        return attr == 'false' ? 'true' : 'false';
    })
});

这是一个小提琴:https://jsfiddle.net/tactics/u4quaje0/2/

谢谢。

【问题讨论】:

  • 更新:我想出了如何让菜单在第二次点击时关闭。仍然没有弄清楚标签的事情。

标签: jquery slidetoggle jquery-focusout


【解决方案1】:

您是否尝试过解决第二个问题?

     $("#idofyourlink").click(function(){$("#idofyourpopup").toggle();})

关于您的第三个问题,您是否尝试过将该菜单的tabindex 属性设置为“0”?然后在您的脚本中,添加以下内容:

     $("#idofyourmenu").blur(function(){$("#idofyourpopup").hide();});

【讨论】:

  • 切换解决方案根本不起作用。模糊解决方案有效,但它产生了第二个问题:您不能在菜单中的链接上使用选项卡。打开菜单并单击选项卡按钮后,它会立即关闭菜单。
  • 绝对不要将一个元素设置为 tabindex="0" ,因为您将其从 Accessibillity 流程中取出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
相关资源
最近更新 更多