Прекращение работы слушателя событий(eventListener) JS

Есть ли способ останавливать или отменять слушатели событий(eventListener)?

Задача такая:
Происходит вызов функции которая подключает слушатель событий(mouseup), нужно чтобы при вызове последующией функции отмениить/остановить слушатель событий (eventListener). При клике по кнопке (#button_VisibleSearch) должен начинать работу слушатель событий, а при нажатии на кнопку (#button_HideSearch) должен останавливаться/отменяться.

<div class="hNav_Input">
    <button id="button_HideSearch"><i class="fas fa-arrow-left"></i></button>
    <input type="text" placeholder="Поиск" id="input_SearchID">
    <button id="button_VisibleSearch"><i class="fas fa-times"></i></button>
</div>

JS

$('#button_VisibleSearch').on('click', function() { 
    track_Click(1)
});
$('#button_HideSearch').on('click', function() { 
    track_Click(0);
});
function track_Click(a) {
    if(a==1){
        $(document).mouseup(function(e) {
            //код
        })  
    }else if(a==0){
            //ничего не происходит
    }
}//Пытался сделать таким глупым способом но не это не сработает

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

Автор решения: Vladimir T

Возможно данное простое решение окажется полезным (если смотреть на клик на всём документе в целом, то вам придётся модифицировать решение в зависимости от требований, так как mouseup срабатывает раньше, чем меняется значение по click):

var listen=0;
$('#button_VisibleSearch').on('click', function() {
    listen=1;
});
$('#button_HideSearch').on('click', function() { 
    listen=0;
});
function something() {
    alert('doing SOMETHING');
}
$('#banner-message').mouseup(function(e) {
    if(listen==1){
            something()
    }else{
      //alert('doing NOTHING');
    }
});

https://jsfiddle.net/ejxoh7by/

→ Ссылка