2016-03-02 73 views
0

這段代碼做了什麼?scroll.scrolldisabler做什麼?

var oldScrollPos = $(window).scrollTop(); 
    $(window).on('scroll.scrolldisabler', function (evt) { 
     $(window).scrollTop(oldScrollPos); 
     evt.preventDefault(); 
}); 

我的代碼庫使用了上面的代碼,但我不太確定它爲什麼有用。

回答

2

簡短回答:該代碼會阻止用戶滾動窗口,但".scrolldisabler"部分沒有任何固有含義,並且不需要使代碼生效。是否防止滾動是「有用」取決於您的要求。

龍答:

第一行存儲在變量oldScrollPos窗口的當前滾動位置。

.on()的調用爲窗口「滾動」事件創建一個事件處理程序。處理程序所做的是將窗口的滾動位置設置回存儲在變量oldScrollPos中的內容,以防止用戶滾動窗口。 (這也叫.preventDefault(),但我不認爲做任何事情在這種情況下,因爲滾動發生後觸發滾動事件。)

".scrolldisabler"部分是一個「事件命名空間」,這是一個jQuery功能:它只是一個標識符,您可以使用該標識符來解除綁定此處理程序而不影響其他滾動處理程序,它是而不是實際事件名稱的一部分,並且沒有特定的技術含義。這可以編碼爲.on("scroll.hello".on("scroll",它仍然會以相同的方式工作。名稱空間僅在您稍後致電.trigger().off()時發揮作用。

有關jQuery事件命名空間的更多信息,請參閱.on() documentation