Například u autocomplete funkcí často nechceme odesílat dotaz s každým vloženým znakem do input políčka, ale až po chvíli při dokončení zadávání.
Jak tedy jednoduše zpomalit odesílání dotazů až na poslední písmeno? Vytvoření obalovací funkce našeho eventu na keyup
function throttle(f, delay){
var timer = null;
return function(){
var context = this, args = arguments;
clearTimeout(timer);
timer = window.setTimeout(function(){
f.apply(context, args);
},
delay || 500);
};
}
Nyní již stačí funkcí throttle obalit naše původní volání function(){...}
$('#search').keyup(throttle(function(){
// odeslání dotazu přes ajax
}));
září 2018