I'm using Ben Alman's jQuery throttle - debounce script and I keep on running into an Uncaught TypeError when it is triggered.
It should also be said that I am using Twitter Bootstrap as a framework for responsive design, AND have a few synchronized CarouFredSels on the page as well.
The error I'm getting is this: Uncaught TypeError: callback.apply is not a function jquery.ba-throttle-debounce.js:149
I look at line 149 and this is the area of interest:
function wrapper() {
var that = this,
elapsed = +new Date() - last_exec,
args = arguments;
function exec() {
last_exec = +new Date();
callback.apply( that, args ); //LINE 149//
};
function clear() {
timeout_id = undefined;
};
if ( debounce_mode && !timeout_id ) {
exec();
}
timeout_id && clearTimeout( timeout_id );
if ( debounce_mode === undefined && elapsed > delay ) {
exec();
} else if ( no_trailing !== true ) {
timeout_id = setTimeout( debounce_mode ? clear : exec, debounce_mode === undefined ? delay - elapsed : delay );
}
};
I'm not really familiar with this script, since it was in place before I was asked to take over. The throttle script is triggered when the user clicks into a search field that toggles an "auto-complete" script to be implemented later on.
You have to swap the parameters.
It's
$.debounce(delay, callback)and not$.debounce(callback, delay)jQuery.debounce
Debounce execution of a function. Debouncing, unlike throttling, guarantees that a function is only executed a single time, either at the very beginning of a series of calls, or at the very end. If you want to simply rate-limit execution of a function, see the jQuery.throttle method.
Usage
Arguments
delay (Number)A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.
at_begin (Boolean)Optional, defaults to
false. If at_begin is false or unspecified, callback will only be executeddelaymilliseconds after the last debounced-function call. Ifat_beginistrue,callbackwill be executed only at the first debounced-function call. (After the throttled-function has not been called fordelaymilliseconds, the internal counter is reset)callback (Function)A function to be executed after delay milliseconds. The
thiscontext and all arguments are passed through, as-is, tocallbackwhen the debounced-function is executed.