Estoy tratando de encontrar una forma limpia de agregar eventos de mousemove para asegurarme de que se llame a mi código, pero solo una vez cada 250-300 milisegundos.jQuery: Firemove los eventos de mouse menos a menudo
He pensado en usar algo como lo siguiente, pero me preguntaba si había un patrón mejor, o algo jQuery dispone que va a hacer lo mismo:
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: La respuesta aceptada a continuación funcionaría perfectamente para esta situación, sin embargo, encontré que la funcionalidad mousestop()
incluida en la respuesta eliminó realmente mi necesidad de agregación, por lo que si está leyendo esta pregunta y buscando una respuesta, vea si el complemento mousestop es lo que ¡realmente necesito!
+1 - ¡Gracias por la sugerencia! ¿Es esta la mejor/más limpia? Parece un truco de hack ... –
Sí, de hecho es un poco hackeo, 'window.setInterval' sería más adecuado para este escenario. –
¡Aceptado! - Resulta que la función 'mousestop' es exactamente lo que necesito y eliminará completamente el código de tiempo de espera. ¡Muchas gracias! –