ДурианНу вот, дискриминация роликовых людей!

Создал обработчик события без глобальных переменных

Надоело использовать глобальные переменные, решил сделать полностью без них.

На элемент поля вешается событие keyup и происходит обработка. Использутся таймер, массив.

Таймер и массив храню в самом элементе. Также создаю там же функцию обработчик, которая используется в двух местах.

Получилось очень хорошо, всё в одном месте, замкнуто и под контролем, объектно типа.

Как видно, доступ идёт через this, в обработчике jQuery туда передаётся элемент.

Никаких внешних функций, переменных и прочей шелухи, по сути, даже actionscript3 или java совместимо.

Конечно, постоянно проверять, существует ли функция, не очень хорошо, но тогда нужно создавать отдельный объект-класс, а может быть, есть ещё какие-то фокусы, нужно подумать.

 $("#search")
 .bind('keyup', function() {
  var that = this;

  //---------------
  if (!that.process)
  {
   that.process = function(data) {
     //..doing
   }
  }
  //---------------

  if (that.processDoing) return;

  if (!this.exactCache) this.exactCache = [];
 //...doing

  if (this.exactCacheTimer) clearTimeout(this.exactCacheTimer);
  this.exactCacheTimer = setTimeout(function() {

    that.processDoing = true;
    //....doing


  }, 1000);

 
 });