2010-07-06 7 views
11

Tengo una función que enlazó con el evento scroll(), pero el hecho es que quiero que la función se active solo en caso de desplazamiento vertical (también tengo un desplazamiento horizontal).Hay un evento de desplazamiento vertical en jQuery

No vi tal posibilidad en la documentación de jQuery, ¿podría haber un truco para hacerlo?

Respuesta

11

No hay un evento específico, pero puede probar la posición .scrollLeft() para ver si se ha movido desde una posición previamente almacenada.

Algo como esto:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft != currentLeft) { 
     prevLeft = currentLeft; 
     console.log("I scrolled horizontally."); 
    } 
}); 
+0

No sé por qué ni siquiera pienso en eso. Muchas gracias, eso es exactamente lo que estaba buscando. (Acabo de usar scrollTop() porque encajaba en mi situación) –

+0

@Michael - De nada. : o) – user113716

0

esto debería funcionar:

var prevLeft = 0; 
$(document).scroll(function(evt) { 
    var currentLeft = $(this).scrollLeft(); 
    if(prevLeft === currentLeft) { 
     console.log("I scrolled vertically."); 
    } 
    else { 
     prevLeft = currentLeft; 
    } 
}); 
3

También puede utilizar .scrollTop para hacer un evento de desplazamiento vertical personalizado.

var prevTop = 0; 
$(document).scroll(function(evt) { 
    var currentTop = $(this).scrollTop(); 
    if(prevTop !== currentTop) { 
     prevTop = currentTop; 
     console.log("I scrolled vertically."); 
    } 
}); 

Jquery .scrollTop()

Cuestiones relacionadas