2014-11-05 92 views
0

我想接下來要做的事,最多就是:向下滾動或在無限循環

enter image description here

換句話說:有一些DIV-S。我想總是顯示X div -s。三個上面的div用黑色着色,最後一個div用灰色着色。

如果我向下滾動,上面的3個div將會以黑色着色,而最後一個會以灰色着色。 (如果向上滾動,則會發生同樣的情況:3個上部div將以黑色着色,最後一個呈灰色)。

我不知道爲什麼滾動事件在滾動向下或向上按下(一次按下)後會被多次調用。它處於循環模式。

(後我解決這個問題,我會做的顏色問題)

這是我的jsfiddle:

http://jsfiddle.net/alonshmiel/Ht6Ym/2966/

,這是滾動:

jQuery(function($) { 
    $('#divContent').scroll(function() { 
     var currentScrollTop = $(this).scrollTop(); 
     if (currentScrollTop > divContentScrollTop) { 
      divContentScrollTop += (divHeight + 2); 
      $("#divContent").scrollTop(divContentScrollTop) 
     } 
     else { 
      divContentScrollTop -= (divHeight + 2); 
      $("#divContent").scrollTop(divContentScrollTop) 
     } 
    }) 
}); 

任何幫助讚賞。

+1

請勿使用'alert'進行調試。這使得無法測試頁面上的自然滾動。使用'console.log'。 – Halcyon 2014-11-05 16:34:51

+1

注意,用'console.log()'調試,而不是'alert()'。 – j08691 2014-11-05 16:34:52

回答

1

這是因爲您在滾動處理程序中使用JavaScript進行滾動。

$("#divContent").scrollTop(divContentScrollTop) 

,導致該div來滾動,然後觸發滾動處理程序,然後再滾動股利,導致死循環。

您可以更改您的代碼以刪除像這樣的滾動。

jQuery(function($) { 
    $('#divContent').scroll(function() { 
     var currentScrollTop = $(this).scrollTop(); 
     if (currentScrollTop > divContentScrollTop) { 
      divContentScrollTop += (divHeight + 2); 
     } 
     else { 
      divContentScrollTop -= (divHeight + 2); 
     } 
    }) 
}); 

然後保持跟蹤哪個div將上漲,你仍然可以做着色。