2012-10-25 17 views
5

Ho un div scorrevole che voglio scorrere verso il basso di 50 pixel ogni X secondi. Va bene e funziona.jQuery - scorrere verso il basso ogni x secondi, quindi scorrere verso l'alto

Ho anche una funzione separata che fa scorrere il div all'indietro in alto quando raggiunge il fondo. Va bene anche; lavoro.

Ora, ho bisogno di combinare i due in modo che lo scorrimento verso il basso viene ignorato fino a quando non si scorre di nuovo verso l'alto.

Ho un esempio 'lavorare' qui, come potrai vedere che ha un comportamento piuttosto di nocciola: http://jsfiddle.net/JVftf/

window.setInterval(scrollit, 3000); 

function scrollit() { 
    $('#scroller').delay(2000).animate({ scrollTop: $("#scroller").scrollTop() + 50 }, 'slow'); 
} 

$('#scroller').bind('scroll', function() { 
    if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { 
     $('#scroller').delay(2000).animate({ scrollTop: 0 }, 1000); 
    } 
}); 

risposta

4

La mia versione:

var scrollingUp = 0; 

window.setInterval(scrollit, 3000); 

function scrollit() { 
    if(scrollingUp == 0) { 
     $('#scroller').delay(2000).animate({ scrollTop: $("#scroller").scrollTop() + 50 }, 'slow'); 
    } 
} 

$('#scroller').bind('scroll', function() { 
    $('#status').html(scrollingUp); 

    if ($(this).scrollTop() + $(this).innerHeight() >= $(this)[0].scrollHeight) { 
     scrollingUp = 1;  
     $('#scroller').delay(2000).animate({ scrollTop: 0 }, 1000, function() { 
      scrollingUp = 0;  
     }); 
    } 
});​ 

Demo: http://jsfiddle.net/EFmeK/

Btw, nel jsfiddle, scorre 60px invece di 50px, che ho "corretto" nel mio esempio.

+0

Perfetto. Complimenti extra per il mio errore di battitura. –

2

provare qualcosa di simile: http://jsfiddle.net/JVftf/3/

window.setInterval(scrollit, 1000); 

function scrollit() { 
    console.log(($("#scroller").scrollTop() + $("#scroller").innerHeight())) 
    console.log($("#scroller")[0].scrollHeight) 

    if(($("#scroller").scrollTop() + $("#scroller").innerHeight()) >= $("#scroller")[0].scrollHeight) 
     $('#scroller').animate({ scrollTop: 0 }, 100).delay(900); 
    else 
     $('#scroller').animate({ scrollTop: $("#scroller").scrollTop() + 60 }, 'slow',function(){ 

    }); 
} 
+0

Sembra buono in chrome, ma non sembra funzionare affatto in IE9. –

Problemi correlati