javascript - jQuery 侧边栏菜单背景不会隐藏单击外部

标签 javascript jquery html css

我的 jQuery 侧边栏菜单点击显示在侧边栏隐藏后出现问题,叠加层 (.backdrop) 不会隐藏。

这是 fiddle

HTML

<li class="topHeaderMenu leftMenu listMenu" id="open"><div   class="listMenuDiv"><i class="glyphicon glyphicon-align-justify"></i></div></li>

<div class="backdrop"></div>

<div class="sidebar">
  content
</div>

jQuery

$('#open').click(function()
{
    $(this).find('i').toggleClass('glyphicon-align-justify').toggleClass('glyphicon-remove');
    $('.sidebar').toggleClass('active');
$(".backdrop").toggle();
})

$(document).click(function(e)
{
    var sidebar = $(".sidebar, #open");

    if(!sidebar.is(e.target) && sidebar.has(e.target).length === 0)
    {
        $('#open').find('i').toggleClass('glyphicon-align-justify').toggleClass('glyphicon-remove');
        sidebar.removeClass('active');
    }
});

CSS

p {
text-align: center;
}

ul
{
  list-style: none;
}

.sidebar
{
    position: fixed;
    transform: translateX(-120%);
    display: inline-block;
    height: 100vh;
    background: lightblue;
    transition: all 0.3s ease-in;
    width: 200px;
    z-index: 8;
}

.active
{
    transform: translateX(0);
}

.backdrop
{
height: 100vh;
width: 100%;
z-index: 7;
position: fixed;
top: 0;
left: 0;
display: none;
background-color: #000;
opacity: 0.2;
-webkit-transition: all 0.5s ease;
-moz-transition: all 0.5s ease;
-o-transition: all 0.5s ease;
transition: all 0.5s ease;
}

所以问题是,侧边栏隐藏后 .backdrop 不隐藏。我想要的是在单击外部侧边栏时隐藏。

最佳答案

您正在删除“事件”类,但没有隐藏您的背景 div。请使用以下代码

$('#open').click(function()
    {
        $(this).find('i').toggleClass('glyphicon-align-justify').toggleClass('glyphicon-remove');
        $('.sidebar').toggleClass('actives');
        $(".backdrop").toggle();
    })

    $(document).click(function(e)
    {
        if($(".sidebar.actives").length > 0)
        {
            var sidebar = $(".sidebar, #open");

            if(!sidebar.is(e.target) && sidebar.has(e.target).length === 0)
            {
                $('#open').find('i').toggleClass('glyphicon-align-justify').toggleClass('glyphicon-remove');
                sidebar.removeClass('actives');
        $(".backdrop").hide();
            }
        }
    });

关于javascript - jQuery 侧边栏菜单背景不会隐藏单击外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761439/

相关文章:

javascript - 当我将子数组插入另一个数组时,为什么 JavaScript 会添加额外的方括号?

javascript - Navbar 更多在右侧

java - 使用 Jsoup 解析 block 引号内的文本

javascript - 使用 Jquery 查看和隐藏图像

javascript - 使textarea全屏jquery(用作代码编辑器)

php - $.post 函数未返回正确的数据

javascript - 如何使用 JavaScript 删除元标记?

javascript - React 禁用一个按钮,直到按下另一个按钮

javascript - 从 jquery 函数获取值并在其他脚本中使用它

javascript - Parse Cloud - 在从云返回之前为数据设置属性