Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не закрывается меню (https://javascript.ru/forum/misc/57472-ne-zakryvaetsya-menyu.html)

byM 05.08.2015 12:31

Не закрывается меню
 
Добрый день. У меня есть меню, которое открывается и закрывается по клику на одну кнопку. И также может закрыться если нажать не в блок выдвинутого меню.
Но проблема вот в чем, когда я нажимаю на блок который выдвинулся, и после него нажимаю не копку закрыть, а просто жму в любое место то меню уже назад не задвигается, это как то не удобно. Подскажите как мне исправить это? Вот песочницаhttp://jsfiddle.net/342swr8m/5/

P.s Строго за код не судите, я в этом деле новичок. Заранее спасибо за помощь =)

рони 05.08.2015 12:52

Закрытие по клику вне блока
 
byM,
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <script type='text/javascript' src='https://code.jquery.com/jquery-1.9.1.js'></script>
  <style type='text/css'>
    .sidebar_open-icons {
    background: rgba(0, 0, 0, 0) none repeat scroll 0 0;
    border: medium none;
    border-radius: 50%;
    cursor: pointer;
    float: left;
    height: 44px;
    text-align: center;
    width: 44px;
    cursor: pointer;
}
.sidebar_open-icons:hover {
    background-color: #f4f4f4;
}
#navbar_open-left {
    background-color: #eee;
    box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1) inset, -1px -1px 0 0 rgba(0, 0, 0, 0.07) inset;
    display: inline;
    height: 200px;
    left: -50%;
    min-width: 260px;
    position: absolute;
    top: 64px;
    z-index: 2;
    transition: left .5s;
}
#navbar_open-left.visible {
    left: 0;
}
  </style>
<script>
$(function () {
    var keyOpen = $('#navbar_open'),
        navBar = $('#navbar_open-left');
    keyOpen.click(function (e) {
        navBar.toggleClass("visible")
        e.preventDefault()
    });
    $(document).click(function (e) {
        if (!$(e.target).closest("#navbar_open, #navbar_open-left").length ) navBar.removeClass("visible")
    });


});
</script>


</head>
<body>
  <div class="sidebar_open-wrap">
    <div class="sidebar_open-icons" id="navbar_open">=) click me</div>
    <div class="sidebar-left" id="navbar_open-left"></div>
</div>
</body>
</html>

EmperioAf 05.08.2015 12:52

вы же сами написали:
$(document).click(function (e) {
        if ((e.target || e.srcElement) !== keyOpen[0] && !flag) navBar.removeClass("visible")
    });


и

navBar[0].onclick=function(e){
            flag=!0;
        }


т.е. после нажатия на navBar переменная flag становится равной true и условие:
(e.target || e.srcElement) !== keyOpen[0] && !flag

не выпоняется

byM 05.08.2015 13:12

Спасибо за помощь =)


Часовой пояс GMT +3, время: 19:43.