2010-07-06 1 views
11

Ho una funzione che ho associato all'evento scroll(), ma il fatto è che voglio che la funzione venga attivata solo in caso di scorrimento verticale (ho anche qualche scroll orizzontale).C'è un evento di scorrimento verticale in jQuery

Non ho visto questa possibilità nella documentazione di jQuery, potrebbe esserci un trucco per farlo?

risposta

11

Non c'è un evento specifico, ma è possibile testare la posizione .scrollLeft() per verificare se è stata spostata da una posizione memorizzata in precedenza.

Qualcosa di simile a questo:

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

Non so perché non ho nemmeno pensato. Grazie mille è esattamente quello che stavo cercando. (Ho appena usato scrollTop() invece perché si adattava alla mia situazione) –

+0

@ Michael - Prego. : O) – user113716

0

questo dovrebbe funzionare:

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

È inoltre possibile utilizzare .scrollTop per fare un evento di scorrimento verticale personalizzato.

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

Jquery .scrollTop()