2015-04-14 29 views
5

Ho bisogno di organizzare la navigazione come jquery.fullPage: quando faccio scorrere una volta - passo alla sezione successiva.Come disattivare l'effetto a scorrimento multiplo in osx e l'evento di scorrimento fuoco una volta per scorrimento

Ho provato a utilizzare jquery.mousewheel per questo, ma non riesce in MacOS con touchpad o trackpad o APPLE Magic Mouse: scorre più diapositive per ogni scorrimento.

ho cercato di utilizzare questa soluzione: https://github.com/jquery/jquery-mousewheel/issues/36#issuecomment-67648897

Funziona bene in Chrome, ma non è così in FF e ha bug in Safari.

Questo è semplice dimostrazione di emissione: http://jsfiddle.net/ss5LueLx/13/

$slider.on('mousewheel', function(event) { 
    if (event.deltaY>0) { 
     slider.prevSlide(); 
    } else { 
     slider.nextSlide(); 
    } 
}); 

risposta

0

Ho testato questa dichiarazione nel mio browser SeaMonkey e fallisce.

var delta = e.type == 'mousewheel' ? e.originalEvent.wheelDelta * -1 : 40 * e.originalEvent.detail; 

Solo nel caso, ho guardato il DeltaY e funziona: uno in una direzione e nell'altra -1, proprio come si è determinato nelle altre due implementazioni che avete.

console.log(e.deltaY); // view console in FireBug 

Osservando la struttura dell'evento a Firebug, vedo che il tipo di evento è "rotellina", eppure non vedo un campo wheelData nel originalEvent.

E anche se c'è un campo di dettaglio, ma quello rimane a zero.

Immagino che si stia tentando di passare all'elemento successivo solo dopo aver raggiunto +/- 3. Vorrei suggerire qualcosa del genere per compiere questa impresa:

// somewhere, initialize to zero 
var current_position = 0; 


// on mousewheel events 
current_position += e.deltaY; 

// you had a x 40 which would indicate that the limit is about 120/40 
// if 3 is too small, you can always increase it to 5 or event 10... 
if(current_position <= -3) 
{ 
    slider.nextSlide(); 
    current_position = 0; 
} 
else if(current_position >= 3) 
{ 
    slider.prevSlide(); 
    current_position = 0; 
} 

altrimenti si potrebbe verificare che il allowScroll bandiera funziona come previsto. Non programma gli oggetti in questo modo, quindi non sono sicuro se sia corretto o meno. (Uso la sintassi prototype che è utile se si desidera estendere le classi.)