Existe uma maneira de obter os eventos da roda do mouse (sem falar sobre scroll
eventos) no jQuery?
javascript
jquery
mousewheel
thejh
fonte
fonte
$(el).on('input', ...
Respostas:
Há um plugin que detecta a roda do mouse para cima / baixo e a velocidade em uma região.
fonte
fonte
DOMMouseScroll
evento é usado no FF, então você tem que ouvir em ambos.bind('DOMMouseScroll mousewheel') {
evetns developer.mozilla.org/en-US/docs/DOM/DOM_event_reference/...e.originalEvent.wheelDelta
é indefinido em FF23Vinculado a ambos
mousewheel
eDOMMouseScroll
acabou funcionando muito bem para mim:Este método está funcionando no IE9 +, Chrome 33 e Firefox 27.
Editar - Mar 2016
Decidi revisitar esse problema, já faz um tempo. A página MDN para o evento de rolagem tem uma ótima maneira de recuperar a posição de rolagem usada
requestAnimationFrame
, o que é altamente preferível ao meu método de detecção anterior. Modifiquei o código para oferecer melhor compatibilidade, além da direção e posição da rolagem:Este código está atualmente trabalhando em
Chrome v50, Firefox v44, Safari v9, and IE9+
Referências:
fonte
A partir de agora em 2017, você pode escrever
Funciona com o Firefox 51, Chrome 56, IE9 + atual
fonte
As respostas que falam sobre o evento "mousewheel" referem-se a um evento descontinuado. O evento padrão é simplesmente "roda". Consulte https://developer.mozilla.org/en-US/docs/Web/Reference/Events/wheel
fonte
wheel
evento é apoiado emEdge
nãoIE
que não é a mesma coisa. CanIuseIsso funcionou para mim :)
de stackoverflow
fonte
Aqui está uma solução de baunilha. Pode ser usado no jQuery se o evento passado para a função é o
event.originalEvent
que o jQuery disponibiliza como propriedade do evento jQuery. Ou, se dentro dacallback
função abaixo, adicionamos antes da primeira linha:event = event.originalEvent;
.Esse código normaliza a velocidade / quantidade da roda e é positivo para o que seria uma rolagem para a frente em um mouse típico e negativo em um movimento da roda para trás do mouse.
Demonstração: http://jsfiddle.net/BXhzD/
Há também um plug-in para jQuery, que é mais detalhado no código e um pouco mais de açúcar: https://github.com/brandonaaron/jquery-mousewheel
fonte
Isso está funcionando nas versões mais recentes do IE, Firefox e Chrome.
fonte
Eu estava preso nesta questão hoje e achei que esse código está funcionando bem para mim
fonte
use este código
fonte
minha combinação fica assim. desaparece e desaparece em cada rolagem para baixo / para cima. caso contrário, você precisará rolar até o cabeçalho para inserir o cabeçalho.
o acima não é otimizado para touch / mobile, acho que esse é o melhor para todos os dispositivos móveis:
fonte
O plugin que o @DarinDimitrov postou
jquery-mousewheel
, está quebrado com o jQuery 3+ . Seria mais aconselhável usar ojquery-wheel
que funciona com o jQuery 3+.Se você não deseja seguir a rota do jQuery, o MDN recomenda o uso do
mousewheel
evento, pois ele não é padrão e não é suportado em muitos lugares. Em vez disso, diz que você deve usar owheel
evento à medida que obtém muito mais especificidade sobre exatamente quais são os valores que você está recebendo. É suportado pela maioria dos principais navegadores.fonte
Se você estiver usando o plug-in jquery mousewheel mencionado , que tal usar o segundo argumento da função manipulador de eventos -
delta
:fonte
Eu tive o mesmo problema recentemente, onde
$(window).mousewheel
estava retornandoundefined
O que eu fiz foi
$(window).on('mousewheel', function() {});
Além de processá-lo, estou usando:
fonte