Изменение Jquery с задержкой

Возможный дубликат:
Звонки вызовов в jQuery

Мне нравится функция .change() jQuery, но я бы хотел предотвратить запуск тонны запросов AJAX, когда пользователь быстро меняет параметры в выпадающем списке. Например, когда пользователь использует колесо прокрутки мыши, он будет запускать каждый параметр, поскольку они выбирают свою новую опцию.

Я хотел бы получить хороший чистый способ обработки только отправки этих обновлений после того, как пользователь перестанет обновлять выпадающее меню в секунду.

Есть ли опрятный способ справиться с этой ситуацией?

Ответы

Ответ 1

Типичный способ сделать это - с помощью setTimeout и clearTimeout:

var wto;

$('#select').change(function() {
  clearTimeout(wto);
  wto = setTimeout(function() {
    // do stuff when user has been idle for 1 second
  }, 1000);
});

Ответ 2

Я рекомендую вам использовать underscore.js, а затем:

var newFunction=_.debounce(function (){ 
  alert('You function, after use stop scroll')
},1000); //Wait seconds after he stops

$('#select').change(newFunction);

Подробнее о underscore.debounce.