2015-11-25 4 views
2

Я пытаюсь выяснить, в каком направлении пользователь «вымотал мышью», используя привязку для события mousewheel для моего элемента.Получить направление для mousewheel JQuery обработчик события

Вы можете увидеть в следующем фрагменте, когда мышь мыши над серым прямоугольником, событие запускается.

JSFiddle

HTML

<div class="rect"></div> 
<div> 
    Mousewheel event state : 
    <label class="event-state-mousewheel">Triggered !</label> 
</div> 

CSS

.rect { 
    width : 200px; 
    height : 200px; 
    background-color : lightgrey; 
} 

.event-state-mousewheel { 
    color : red; 
    display : none; 
} 

JavaScript

$(function() { 
    $('.rect').on('mousewheel', function(event) { 
     $(".event-state-mousewheel").stop(true, false).fadeIn(250).fadeOut(250); 
    }); 
}); 

ПРОБЛЕМА

Я не могу найти способ, чтобы получить направление. Я попытался отладить объект, возвращенный при запуске события, но он слишком велик для отладки, поскольку количество элементов в нем является монстративным.

ВОПРОС

Есть ли формула использования этих элементов (от объекта, возвращаемого), чтобы получить направление колеса мыши? Или есть такое событие, как $("#element").on("mousewheeltop")?

ПРИМЕЧАНИЕ

Я хочу, чтобы в возможно не использовать любой другой внешний модуль, только JQuery.

ответ

3

от свойств wheelDelta и детализации, что вам нужно, как показано ниже:

if (event.originalEvent.wheelDelta > 0 || event.originalEvent.detail < 0) { 
    // Scroll up 
} 
else { 
    // Scroll down 
} 

Я обновил ваш jsfiddle с этим кодом.

Кроме того, обратите внимание, что MouseWheel событие deprecated и вы должны использовать колесо вместо этого.

+0

После изменения '' .mousewheel' в .wheel', предупреждение всегда возвращает 'down', даже при прокрутке. –

+0

@TimLewis Я не вижу этого поведения в этом обновленном jsfiddle? https://jsfiddle.net/qexb1207/2/ –

+0

Хм ... Какой браузер вы используете? Я заметил «вниз» только в Firefox, но Chrome показывает правильное направление. –

0
​$(document).ready(function(){ 
    $('#foo').bind('mousewheel', function(e){ 
     if(e.originalEvent.wheelDelta > 0) { 
      $(this).text('scrolling up !'); 
     } 
     else{ 
      $(this).text('scrolling down !'); 
     } 
    }); 
}); 

Смотреть это: Get mouse wheel events in jQuery?

+0

Зачем вам делиться на 120, а затем сравнивать с 0 ??? –

+1

@AlanBuchanan Вы правы, это не нужно. Я редактирую – Nvan

Смежные вопросы