Создал обработчик события без глобальных переменных
Надоело использовать глобальные переменные, решил сделать полностью без них.
На элемент поля вешается событие 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);
});