2010-07-28 30 views
7

是否有jQuery的一個beforeScroll事件?或者這種事件可以複製嗎?jQuery的beforeScroll事件

我們有我們需要具有溢出一個div之前執行的事件的情景:滾動已滾動。使用.scroll事件的問題是在div滾動而不是之前引發這個問題。

+2

你的意思是執行滾動之後,但在實際的滾動已發生過嗎? – David 2010-07-28 11:03:12

+1

@大衛 - 是的,現貨。 – 2010-07-28 11:07:45

回答

6

沒有,有沒有這樣的情況。滾動事件不能被取消(原因很明顯),我會猜測,這樣訪問時,scrollTop的scrollLeft屬性是準確的,它的動作之後觸發。

可能的解決方法可能是捕獲mousewheel/DOMMouseScroll事件以及頁面向上,向下翻頁,向上,向下等鍵的按鍵事件。但是,沒有100%的方法 - 你永遠無法阻止用戶與瀏覽器的滾動條組件交互。唯一真正的解決方案是滾動自己的滾動條。

如果你只是希望找到用戶滾動的金額,你可以設置一個計時器,當前scrollLeft/scrollTop的存儲在一個變量,然後檢查他們VS在滾動事件的新值。

+0

這樣我就可以抓住事件當用戶在.scroll事件被觸發之前,點擊瀏覽器的滾動條?即keydown事件是否在滾動事件之前觸發? – 2010-07-28 11:17:31

+0

@Robert:不,滾動條是一個UI元素,不會觸發鼠標事件。 keydown事件將在滾動事件之前觸發,因爲如果您願意,可以取消滾動以防止滾動。就像我所說的,沒有100%的方法,最好的辦法就是建立自己的滾動條。 – 2010-07-29 10:12:52

0

我在原來是令人驚奇的未laggy粗方式解決了這一:

我更新的位置自己檢查該位置是,我想,使用位置=固定的範圍內之後,和改變最高價值。