Во-первых, почему вы используете два тайм-аута?Мне кажется, что setInterval () будет лучше
function MouseDownEvent(e) {
*snip*
clearInterval(intervalID);
intervalID = setInterval(function(){checkPos(e);}, 500);
}
Во-вторых, не могли бы вы уточнить это: "... но никогда не обновляет объект e, когда пользователь перемещает мышь"Зачем обновлять объект события, когда пользователь перемещает мышь?Вы только назначили обработчик mouseDown.Если вы хотите что-то делать при каждом перемещении мыши, вам следует использовать событие mouseMove, в этом случае тайм-аут / интервал в любом случае будет ненужным.Решение в первую очередь и использовать синхронизированные обработчики, когда вам абсолютно необходимо.
* Редактировать - решение проблем, поднятых в комментариях *
var handler = {
i : 0,
function : mouseMoveEvent(e) {
handler.i++;
if (handler.i % 100 == 0) {
//Do expensive operations
}
}
}
$(myElement).bind("mousemove", handler.mouseMoveEvent);