jQuery: запускать события mousemove реже

Я пытаюсь найти чистый способ агрегирования событий mousemove, чтобы гарантировать, что мой код будет вызван, но только раз в 250-300 миллисекунд.

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

var mousemove_timeout = null;

$('body').mousemove(function() {
  if (mousemove_timeout == null) {
    mousemove_timeout = window.setTimeout(myFunction, 250);
  }
});

function myFunction() {
  /*
   * Run my code...
   */

  mousemove_timeout = null;
}

EDIT: Принятый ниже ответ идеально подходит для этой ситуации, однако я обнаружил, что функциональность mousestop () , представленная в ответе, фактически устранила мою потребность в агрегировании, поэтому, если вы читаете этот вопрос и ищите ответ, посмотрите, действительно ли плагин mousestop вам нужен!

7
задан Topher Fangio 10 January 2011 в 16:05
поделиться