Почему блок убирается по клику?

столкнулся с такой проблемой. При клике на кнопку появляется блок, но через какое-то время он почему-то исчезает, не могу понять почему. Пример ниже

$(function() {
    var res = $(".header__menu");
    $(".menu-click").on("click", funk);
    $(document).click(function(e) {
        if (!$(e.target).parents().hasClass('menu-click')) funk(false);
    });

    $('.header__menu').on('click', function(e) { e.stopPropagation() });

    function funk(flag) {
        if (res.css("display") == "none" && flag) {
            res.fadeIn(300);
        } else {
            res.fadeOut(300);
        }
    }
});
.header__list--item {
  padding: 18px 32px;
  background: blue;
  color: #fff;
  text-align: center;
  cursor: pointer;
}

.header__menu {
  display: none;
  background: red;
  padding: 52px 18px;
  text-align: center;
  color: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="container">
  <div class="header__list--item menu-click">Материалы</div>
  <div class="header__menu">
    Контетн
  </div>
</div>


Ответы (1 шт):

Автор решения: Макс к

Попробуйте вот так:

$(function() {
    var res = $(".header__menu");
    $(".menu-click").on("click", funk);
   

    $('.header__menu').on('click', function(e) { e.stopPropagation() });

    function funk(flag) {
        if (res.css("display") !== "none") {
            res.fadeOut(300);
        } else {
            res.fadeIn(300);
        }
    }
});
.header__list--item {
  padding: 18px 32px;
  background: blue;
  color: #fff;
  text-align: center;
  cursor: pointer;
}

.header__menu {
  display: none;
  background: red;
  padding: 52px 18px;
  text-align: center;
  color: #fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="container">
  <div class="header__list--item menu-click">Материалы</div>
  <div class="header__menu">
    Контетн
  </div>
</div>

→ Ссылка