2012-03-31 28 views

Respuesta

46

, para diferenciar los de desplazamiento hacia arriba/abajo en jQuery, se puede utilizar:

var mousewheelevt = (/Firefox/i.test(navigator.userAgent)) ? "DOMMouseScroll" : "mousewheel" //FF doesn't recognize mousewheel as of FF3.x 
$('#yourDiv').bind(mousewheelevt, function(e){ 

    var evt = window.event || e //equalize event object  
    evt = evt.originalEvent ? evt.originalEvent : evt; //convert to originalEvent if possible    
    var delta = evt.detail ? evt.detail*(-40) : evt.wheelDelta //check for detail first, because it is used by Opera and FF 

    if(delta > 0) { 
     //scroll up 
    } 
    else{ 
     //scroll down 
    } 
}); 

Este método también funciona en divs que tienen overflow:hidden.

Lo probé con éxito en Firefox, IE y Chrome.

+0

¡Esto funciona muy bien! Un simple '' 'e.preventDefault()' '' tampoco permitirá que su desplazamiento vaya a ningún elemento padre (como la página) si solo desea hacer algo en el desplazamiento de una sección y no desplazarse en realidad elemento o sus padres –

+0

ideas para esto en el trackpad de Apple o el mouse mágico con overflow oculto? http://stackoverflow.com/q/32512924/770127 – ryanve

+1

Esto no se debe hacer más, el rastreo de navegador no ha sido una gran práctica desde hace bastante tiempo. Ahora hay otro evento de navegador cruzado que será mejor usar. http://stackoverflow.com/a/33334461/3168107 – Shikkediel

Cuestiones relacionadas