使用Scrolling來實現無限分頁處理

mmGrid是一個jquery的輕量表格插件,我在原做者的基礎之上増加了自已的一些功能,如:樹,無限分頁等。原來實現無限分頁我是直接綁定了scroll事件,可是發現真正在滾動時性能變得極差,由於在滾動時,會在短期內發出大量的事件,所以每一個都執行的話會很是慢。因而我做了一些處理,如:html

  • 向上滾動時不做處理
  • 向下滾動時,先設置一個正在滾動的標誌,而後執行一個setTimeout的方法,延遲執行,執行以後,再將標誌改回來。這樣,在執行回調函數之間,再滾動不會真正執行。

這樣基本解決了問題。可是方法顯得很「土」。html5

今天看到了一個scrolling的插件,專門用來實現對滾動事件的處理。因而看了一下它的實現:jquery

  • 基於requestAnimationFrame html5的api。這個api相關於以一個離散的setTimeout方式在工做。即它不會立刻運行,而是會等一個延遲再執行。這個是html5的api,因此並非全部瀏覽器都支持。ie要至少10版本才支持。
  • 在不支持的瀏覽器上,它會退化爲setTimeout來執行。
  • 在scroll處理中,也是先設置了一個標誌位,而後調用回調。在回調中再修改標誌位。

實際上是和個人實現是同樣的。只不過,它在支持html5的瀏覽器上使用了requestAnimationFrame這個方法,而且實現得使用起來更方便。因而我就將原來的實現替換爲這個Scrolling插件了。git

要注意,使用時,第一個參數不是jquery的對象,而是真正的DOM元素。由於它不是jquery的插件。github

相關文章
相關標籤/搜索