2016-01-16 36 views
0

我正在嘗試創建一個網站,該網站在單個滾動操作時自動滾動到每個部分。這意味着代碼必須檢查頁面是向上滾動還是向下滾動。我相信下面的代碼解決了我的問題,但滾動操作在頁面滾動時被觸發不止一次。您會看到if語句中的第一個警報達到5,而不是期望的1.任何有關此事的幫助都將非常感謝。滾動功能多次觸發而不是一次

[注]我正在使用velocity.js庫滾動到容器中的每個部分。

var page = $("#content-container"); 
var home = $("#home-layer-bottom"); 
var musicians = $("#musicians"); 
var athletes = $("#athletes"); 
var politics = $("#politics"); 
var bio = $("#politics"); 
var pages = [ home,musicians,athletes,politics,bio ]; 

var pageCur = 0; 


var lastScrollTop = 0; 
page.scroll(function(){ 

var st = $(this).scrollTop(); 
var pageNex = pageCur + 1; 

if (st > lastScrollTop){ 
    alert(pageNex); 
pages[pageNex].velocity("scroll", { container: $("#content-container") }); 
} else { 
    alert(pageCur-1); 
pages[pageCur-1].velocity("scroll", { container: $("#content-container") }); 
} 
lastScrollTop = st; 
pageCur = pageNex; 
}); 

回答

2

滾動事件(以及調整大小事件)會像用戶那樣觸發多次。爲了達到這個目的,最佳做法是debounce。但是,我從來沒有這樣做過。相反,我使用全局布爾值來檢查函數是否被觸發。

​​
+0

完美地工作。剛剛添加了一個setTimeout,它在滾動500毫秒後運行,以使滾動= false。 –

相關問題