Первоначальная проблема связана с вашей функцией прокрутки. Неважно, скрыто ли меню или нет, вы добавляете его в меню до тех пор, пока условие if истинно, поэтому оно появится снова.
Вот несколько простых примеров того, как вы можете это исправить. Я удалил ваш встроенный обработчик кликов в jquery,
1. используйте флаг, чтобы указать, что меню должно быть закрыто
// these should be inside of doc ready which means your isCLosed is not a global var
var isClosed = false;
var $bottomMenu = $('.bottomMenu');
$(document).scroll(function() {
var y = $(this).scrollTop();
// only execute if it is not closed already
if (!isClosed) {
if (y > 800) {
$bottomMenu.fadeIn();
} else {
$bottomMenu.fadeOut();
}
}
});
$("#close").on('click', function() {
isClosed = true;
$bottomMenu.fadeOut();
});
body {
height: 5000px;
}
.bottomMenu {
display: none;
position: fixed;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='bottomMenu' id='myDiv1'>
<button class='close' id='close'>CLOSE X</button>
</div>
2. Отменить привязку прокрутки после закрытия
Вы также можете полностью отменить привязку прокрутки, если у вас есть только одна функция прокрутки
$(document).scroll(function() {
var y = $(this).scrollTop();
if (y > 800) {
$('.bottomMenu').fadeIn();
} else {
$('.bottomMenu').fadeOut();
}
});
$("#close").on('click', function() {
$('.bottomMenu').fadeOut();
$(document).off("scroll");
});
body {
height: 5000px;
}
.bottomMenu {
display: none;
position: fixed;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='bottomMenu' id='myDiv1'>
<button class='close' id='close'>CLOSE X</button>
</div>