Создал обработчик события без глобальных переменных
Надоело использовать глобальные переменные, решил сделать полностью без них.
На элемент поля вешается событие keyup и происходит обработка. Использутся таймер, массив.
Таймер и массив храню в самом элементе. Также создаю там же функцию обработчик, которая используется в двух местах.
Получилось очень хорошо, всё в одном месте, замкнуто и под контролем, объектно типа.
Как видно, доступ идёт через this, в обработчике jQuery туда передаётся элемент.
Никаких внешних функций, переменных и прочей шелухи, по сути, даже actionscript3 или java совместимо.
Конечно, постоянно проверять, существует ли функция, не очень хорошо, но тогда нужно создавать отдельный объект-класс, а может быть, есть ещё какие-то фокусы, нужно подумать.
На элемент поля вешается событие 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); });