метод, который вы пытаетесь использовать, называется debouncing.
У меня обычно есть общая функция debounce в моем javascript:
var debounce=function(func, threshold, execAsap) {
var timeout;
return function debounced () {
var obj = this, args = arguments;
function delayed () {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
};
А потом, когда что-то нужно отменить, я обычно отклоняю функцию,
В вашем случае это может быть что-то вроде:
$("checkbox").click(debounce(callBackFunction,1000));
, где callbackFunction
- функция, выполняющая ваш "дорогой jquery", а 1000
- время ожидания.
Применение вышеизложенного означало бы, что callbackFunction вызывается с интервалом в 1 секунду, если он вызывается с более короткими интервалами, вызов игнорируется.