diff --git a/slick.grid.js b/slick.grid.js index c12bae9bb..85049f935 100644 --- a/slick.grid.js +++ b/slick.grid.js @@ -16,6 +16,22 @@ * and do proper cleanup. */ +//function took from underscore.js +function debounce(func, wait, immediate) { + var timeout; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; +}; + // make sure required JavaScript modules are loaded if (typeof jQuery === "undefined") { throw "SlickGrid requires jquery module to be loaded"; @@ -1941,7 +1957,7 @@ if (typeof Slick === "undefined") { } } - function render() { + var render = debounce(function(){ if (!initialized) { return; } var visible = getVisibleRange(); var rendered = getRenderedRange(); @@ -1964,7 +1980,7 @@ if (typeof Slick === "undefined") { lastRenderedScrollTop = scrollTop; lastRenderedScrollLeft = scrollLeft; h_render = null; - } + }, 250); function handleHeaderRowScroll() { var scrollLeft = $headerRowScroller[0].scrollLeft;