我有一個可滾動的元素,其中包含許多子元素和一個帶有相應選項的選擇標籤。有效地收聽JS .scroll()
我想改變基於元素.scrollTop()
如何有效地做到這一點選擇的價值?我想過將兒童的.offset().top
存儲在一個數組中,並循環遍歷它。但是,瀏覽器不處理它。我可能會嘗試創建一個.setTimeout()
標誌,但這看起來並不乾淨。
r = $('ul')
offsets = []
r.find('li').each((index) ->
offsets[index] = $(this).offset().top
)
r.bind('scroll', ->
// while loop checking .scrollTop() > offsets[n] is slow
// maybe spams to many .scroll events?
)
我更喜歡這個(討厭'setInterval')。謝謝! – mreq 2012-02-20 07:58:53
我看到它正確的事件「fooscroll」只會被解僱,如果用戶停止滾動200ms? – Simon 2012-09-10 13:00:18
@Simon:是的,你是對的。爲了澄清,不,它不'節流'滾動。如果你想每200毫秒滾動滾動一次,而不是隻有一次用戶滾動滾動,你必須以不同的方式進行滾動。 – hayavuk 2012-09-11 14:28:47