當我在做一些web開發時,我發現了一些非常奇怪的東西。所以下面JQuery(document).ready在文檔準備好之前仍然運行?
是我的jQuery代碼
$(document).ready(function() {
$(window).scroll(function() { // check if scroll event happened
if ($(window).scrollTop() > $("#first-content").offset().top * 0.75) {
$(".links").removeClass("white").addClass("black");
to white (#f8f8f8)
} else {
$(".links").removeClass("black").addClass("white");
}
});
});
所以它只是獲取從上一段距離觸發添加和刪除類。必須只有一個點被觸發,除非網站的結構動態變化,我認爲這在我的代碼中是不可能的。
所以問題在於它最終工作正常。當它從窗口頂部通過0.75 *位置到元素頂部時,如果我反過來,字體顏色會從白色變爲黑色,再從黑色變爲白色。
但我無法弄清楚的是,在我設定的觸發點之前只有幾個滾動條,還有一點將顏色從白色變爲黑色,黑色變爲白色每次瀏覽器重新加載這是不可能的,除非該點很快轉移並移回。
如果你嘗試自己,這會更容易理解。
https://jsfiddle.net/forJ/q6u1hLoh/1/
必須有隻有一個剛剛灰色和白色區域的邊界以上變化的點。
但是,您將會看到每次運行代碼時,在設定點之前出現JUST ONCE過早的顏色變化點。我認爲它必須是導致問題的jQuery,而我粘貼的是我所擁有的唯一jQuery。
請不要隨意查看鏈接中的整個代碼,並請告訴我爲什麼還有另一個觸發點。
謝謝
似乎爲我工作得很好?可能是缺乏節流,每次你滾動多次時都會發生班級變化。 – adeneo
非常好的效果,除非單獨的鏈接在背景顏色改變時改變顏色,而不是一次改變它們會更好。 – clearlight
這與「文檔準備好」有什麼關係? – charlietfl