Как только я сделал этот плагин под названием bindDelay
для jQuery:
$.fn.bindDelay = function( eventType, eventData, handler, timer ) {
if ( $.isFunction(eventData) ) {
timer = handler;
handler = eventData;
}
timer = (typeof timer === "number") ? timer : 300;
var timeouts;
$(this).bind(eventType, function(event) {
var that = this;
clearTimeout(timeouts);
timeouts = setTimeout(function() {
handler.call(that, event);
}, timer);
});
};
Используется как обычный bind
метод, но последний аргумент - это задержка перед запуском обработчика (в милсекундах):
$("input").bindDelay('keyup', function() {
$("textarea").text( $(this).val() );
}, 2000);
См. Скрипку: http://jsfiddle.net/c82Ye/2/
И вы отвязываетесь и запускаете его как обычно:
$("input").unbind("keyup");
$("input").trigger("keyup");