запретить функцию наведения курсора мыши при использовании полосы прокрутки

#jquery #onmousedown

#jquery #onmousedown

Вопрос:

У меня есть div, который показывает onclick для ссылки, и я хочу скрыть, когда щелкают мышью за пределами div (аналогично большинству функций модального окна) — проблема в том, что когда пользователь использует полосу прокрутки браузера, это считается щелчком и скрывает div

это то, что я использую для отображения div

 $('.trigger').click(function(e){
    e.preventDefault();
    open_slideout(this);
});

function open_slideout(el){
    $(document).unbind('mousedown');

    //code here to display the div if its not already shown

    //close on click-out
    $(document).bind('mousedown',function(){
        $(panel_id).removeClass('active').hide('fast');
        $(el).removeClass('active');
    });
    $('.panel.active').bind('mousedown',function(e){e.stopPropagation();});
    $('.trigger').bind('mousedown',function(e){e.stopPropagation();});
}
  

итак, я установил остановку распространения, если они нажимают в активной области, но, как я уже сказал, если они используют полосу прокрутки, она скрывает div

Ответ №1:

похоже, это помогло:

 $(document.body).bind('mousedown',function(){
  

Ответ №2:

 $(window).scroll(function(){
   scrolling = true;
});

/*other code */
$(document).bind('mousedown',function(){
if(!scrolling){
        $(panel_id).removeClass('active').hide('fast');
        $(el).removeClass('active');
}
    }).bind('mouseup',function(){ scrolling = false; })
/*other code */
  

Комментарии:

1. Я понимаю, к чему вы клоните с этой идеей, но это не работает — потому что переменной прокрутки присваивается значение true при выполнении события прокрутки (будь то с помощью js, колесика мыши или полосы прокрутки браузера), а событие наведения курсора мыши получает состояние переменной на основе прошлой прокрутки, а не текущего состояния