2014-09-03 3 views
3

Есть ли способ отключить только прокрутку вниз в jQuery?Отключить прокрутку вниз с помощью jQuery

Большое спасибо заранее

+0

попробовать $ (документ). scroll (function() {return false;}); –

+0

Попробуйте этот вопрос: http://stackoverflow.com/questions/11940351/jquery-tools-touch-horizontal-only-disable-vertical-touch –

+0

Я только хочу отключить прокрутку вниз, а не прокрутку вверх – Genzotto

ответ

5
$('html, body').bind('DOMMouseScroll mousewheel MozMousePixelScroll', function(e) { 
    var scrollTo = 0; 

    if (e.type == 'mousewheel') { 
     scrollTo = (e.originalEvent.wheelDelta * -1); 
    } 
    else if (e.type == 'DOMMouseScroll') { 
     // scrollTo = 20 * e.originalEvent.detail; // turns out, this sometimes works better as expected... 
     scrollTo = e.originalEvent.detail; 
    } 

    if (scrollTo > 0) { 
    e.preventDefault(); 
    return false; 
    } 
}); 

Here you have a working fiddle

+0

Я сделал что 'scrollTo = 20 * e.originalEvent.detail;' нуждается в небольшой настройке, я больше не знаю, почему я умножаю ее на 20 :) – Alex

+0

вы можете, однако, взглянуть на https://developer.mozilla.org/en -US/docs/Web/Events/mousewheel и отрегулируйте его по вашим потребностям – Alex

+0

Вы забыли события касания. Но ваш ответ довольно крутой. –

1

После ответа Алекс, мне удалось это сделать следующим способом:

$(window).on('DOMMouseScroll mousewheel MozMousePixelScroll', function(e) { 
    var direction = 0; 
    if (e.type == 'mousewheel') { 
     direction = (e.originalEvent.wheelDelta * -1); 
    } else if (e.type == 'DOMMouseScroll') { 
     direction = e.originalEvent.detail; 
    } 
    var divHeight = $("#myDiv").height(); 
    var scrollTop = $(this).scrollTop(); 
    if (direction > 0 && scrollTop > divHeight - window.innerHeight) { 
     e.preventDefault(); 
     return false; 
    } 
}); 
Смежные вопросы