2014-01-20 194 views
0

香港專業教育學院寫了一個簡單的腳本,心不是工作作爲善意的:的Javascript問題if語句

var prevscroll = 0; 
$(document).scroll(function(){ 

    var currscroll = $(document).scrollTop(); 
    if(currscroll > prevscroll){ 
     $("header").toggle(); 
     prevscroll = currscroll; 
    } 
    if(currscroll < prevscroll){ 
     $("header").toggle(); 
     prevscroll = currscroll; 
    } 
}); 

當頁面滾動下來,它的意思隱藏標題,只顯示它如果向上滾動然而,發生了什麼正如我向下滾動它的輕彈一樣。 :|

我想我可能只是發現了一個愚蠢的錯誤!自從prev滾動不斷增加以來,它將保持閃爍。

+1

每當該條件返回true時,您正在切換外觀使其閃爍。您需要指定hide()或show(),具體取決於您是向上還是向下滾動。 – Goose

回答

2

你不能用你的方式使用toggle(),因爲滾動事件被調用了很多次,所以如果你的if語句使用相同的值調用多次,那麼它會閃爍,然後熄滅,然後打開,然後每次撥打電話.toggle()。你需要明確隱藏或顯示你的條件滿足。

我不太明白究竟你想與prevscroll做什麼,但也許這就是你想要什麼:

var prevscroll = 0; 
$(document).scroll(function(){ 

    var currscroll = $(document).scrollTop(); 
    if(currscroll > prevscroll){ 
     $("header").hide(); 
     prevscroll = currscroll; 
    } 
    if(currscroll < prevscroll){ 
     $("header").show(); 
     prevscroll = currscroll; 
    } 
}); 

這將隱藏你繼續往下看頭隨時隨地的,並顯示只要您開始向上滾動頁眉。

+0

Doh,我發佈後有點抓到!感謝您回答 – user2979139

+0

我使用prevscroll來測試哪些方向正在滾動,以便在向下滾動時隱藏移動設備上的導航欄,但隨後顯示滾動向上而不是在頂部有靜態欄。 (如果這是有道理的) – user2979139