2012-10-25 22 views
5

Her X saniyede 50 piksel aşağı kaydırmak istediğim kaydırılabilir bir div var. Bu iyi ve çalışıyor.jQuery - her x saniyede bir aşağı kaydırın, sonra yukarı kaydırın.

Ayrıca, alt alana ulaştığında divı yukarı kaydırır ayrı bir işlevi var. O da iyi; Çalışma.

Şimdi, ikiyi birleştirmem gerekiyor, böylece tekrar yukarı kaydırılıncaya kadar scrolldown yok sayılıyor.

Ben bunu bazı oldukça çatlak davranışa sahip göreceğimiz gibi, burada bir 'çalışma' örnek var: 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); 
    } 
}); 

cevap

4

Benim versiyon:

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, jsfiddle'ınızda, örneğimde "sabit" olan 50px yerine 60px kaydırır.

+0

Mükemmel. Yazım hatasımı düzeltmek için ekstra kuduzlar. –

2

böyle bir şey deneyin: 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

Kromda iyi görünüyor, ancak IE9'da hiç çalışmıyor gibi görünüyor. –

İlgili konular