2014-09-26 48 views
0

我想查看是否可以優化代碼以檢查哪些行在給定時刻位於視口頂部。該函數在滾動事件上運行,並且頁面動態加載新單元格(每行最多四個)。佈局由一系列列表項組成,絕對位於網格中(大部分時間爲4x4)。我將如何優化查找在視口中可見的最頂行

因爲它是今天的代碼(的scrollPosition較早提取程序,有點像$(窗口).scrollTop()):

var topMostRow = _.min(this.container.find("li").toArray(), function(row) { 
       var offset = $(row).offset().top, 
        diff = scrollPosition - offset; 
       return Math.abs(diff); 
      }) 

正如你可能已經猜到這需要更長的時間和更長的時間越細胞加入

回答

1

是一種堅硬解釋,但我認爲你可以在一個變種,當你做的最後一滾動最後topMostRow存儲,然後,你可以在一個循環與

$(lastTopMostRow).next(); 
使用發現

$(lastTopMostRow).prev(); 

關於滾動的direcition(向上或向下)

,並檢查其中一個是比正,接下來是負你的diff

這樣你就只檢查幾行而不是全部。

+0

謝謝!我會給它一個測試! – 2014-09-26 07:40:30