#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, колесика мыши или полосы прокрутки браузера), а событие наведения курсора мыши получает состояние переменной на основе прошлой прокрутки, а не текущего состояния