javascript - JQuery 如果在元素外部单击隐藏,但如果单击按钮也显示/隐藏

标签 javascript jquery

我在这里遇到一个问题。我有两个要素。一个是按钮,另一个是菜单。我需要解决我第一次单击按钮时出现的问题,菜单打开,但当我第二次单击时却没有。当我在菜单外单击时,它会关闭(很好!)。所以我需要使用按钮关闭/打开元素并在元素外部单击。

这是我的代码:

$(".left-menu-block-one").click(function () {
    $("#first-bar").toggleClass("show");
    if ($("#second-bar").hasClass("show") || $("#third-bar").hasClass("show")) {
        $("#second-bar").removeClass("show");
        $("#third-bar").removeClass("show");
    }
    $(".left-menu-block-one").toggleClass("hide-menu-bars");
    if ($("#first-bar").hasClass("show")) {
        $(".left-menu-block-two").addClass("hide-menu-bars");
        $(".left-menu-block-three").addClass("hide-menu-bars");
    }
})
var container2 = $("#first-bar");
if (!container2.is(e.target) && container2.has(e.target).length === 0) 
{
    $("#first-bar").removeClass("show");
    $(".left-menu-block-one").addClass("hide-menu-bars");

}

附言我为这两个元素添加了所有代码,因为它们可能存在问题...

最佳答案

概念上这样做:

当用户单击按钮时,您的代码将在显示隐藏 之间切换弹出窗口/元素。 (您的代码可能已经这样做了。)

当弹出窗口/元素更改为显示 时,使用“capture”在文档 上添加点击事件监听器'模式。

在这个新的事件处理程序中:

  1. 如果用户点击您的弹出窗口/元素、其子元素或打开弹出窗口/元素的原始按钮,则什么也不做。
  2. 如果他们点击您的弹出窗口/元素或原始按钮之外的任何内容,则将弹出窗口/元素切换回隐藏并删除文档上的事件监听器

关于javascript - JQuery 如果在元素外部单击隐藏,但如果单击按钮也显示/隐藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53210355/

相关文章:

javascript - 为什么显示:inline not working?

javascript - Reactjs Firebase Auth 电话注册流程?

javascript - 如何在元素内使用 Javascript 绘制正方形?

javascript - 如何做类似登录按钮的 Dropbox?

javascript - 原型(prototype)未按预期工作

javascript - 无法使用 jQuery 更改 CSS 底部

javascript - 阻止 React Native WebView 访问 YouTube 网站

javascript - 简单的 JavaScript 事件 : alert using inline and traditional methods

jquery - 在调整传单 map 的高度时在 Bootstrap 4 中显示/隐藏 div

jquery - 如何选择和隐藏 HTML 文件 (DOM) 中除前 5 个元素之外的所有元素