Ok con esto ...
$(window).scroll(function()
{
$('.slides_layover').removeClass('showing_layover');
$('#slides_effect').show();
});
Puedo saber cuándo alguien se desplaza por lo que entiendo. Entonces, con eso estoy tratando de descubrir cómo detectar cuando alguien se ha detenido. En el ejemplo anterior, puede ver que estoy eliminando una clase de un conjunto de elementos mientras se produce el desplazamiento. Sin embargo, quiero volver a activar esa clase cuando el usuario deje de desplazarse.
La razón de esto es que tengo la intención de mostrar una escala mientras la página se desplaza para darle a la página un efecto especial en el que estoy tratando de trabajar. Pero la única clase que estoy tratando de eliminar mientras me desplazo entra en conflicto con ese efecto, ya que es un efecto de transparencia para alguna naturaleza.
Respuestas:
Actualizar
Escribí una extensión para mejorar el
on
controlador de eventos predeterminado de jQuery . Adjunta una función de controlador de eventos para uno o más eventos a los elementos seleccionados y llama a la función de controlador si el evento no se activó durante un intervalo determinado. Esto es útil si desea disparar una devolución de llamada solo después de un retraso, como el evento de cambio de tamaño o similar.¡Es importante comprobar si hay actualizaciones en el repositorio de github!
https://github.com/yckart/jquery.unevent.js
Úselo como cualquier otro controlador de eventos
on
obind
, excepto que puede pasar un parámetro adicional como último:http://yckart.github.com/jquery.unevent.js/
(esta demostración usa en
resize
lugar descroll
, ¡pero a quién le importa!)fuente
Usando jQuery throttle / debounce
jQuery debounce es bueno para problemas como este. jsFidlle
El segundo parámetro es la bandera "at_begin". Aquí he mostrado cómo ejecutar código tanto en el "inicio del desplazamiento" como en el "final del desplazamiento".
Usando Lodash
Como sugirió Barry P, jsFiddle , subrayado o lodash también tienen un rebote, cada uno con apis ligeramente diferentes.
fuente
leading
ytrailing
usted mismo, luego asegúrese de que no pueda haber confusión.Rob W sugirió que revisara otra publicación aquí en la pila que era esencialmente una publicación similar a la original. Al leer eso encontré un enlace a un sitio:
http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
En realidad, esto terminó ayudando a resolver mi problema muy bien después de algunos ajustes para mis propias necesidades, pero sobre todo me ayudó a eliminar muchas de las tonterías y me ahorró alrededor de 4 horas de resolverlo por mi cuenta.
Dado que esta publicación parece tener algún mérito, pensé que volvería y proporcionaría el código que se encuentra originalmente en el enlace mencionado, en caso de que el autor alguna vez decidiera ir en una dirección diferente con el sitio y terminara eliminando el enlace.
fuente
Estuve de acuerdo con algunos de los comentarios anteriores en que escuchar un tiempo de espera no era lo suficientemente preciso, ya que se activará cuando dejes de mover la barra de desplazamiento durante el tiempo suficiente en lugar de cuando dejes de desplazarte. Creo que una mejor solución es escuchar al usuario que suelta el mouse (mouseup) tan pronto como comienza a desplazarse:
y un ejemplo de cómo funciona se puede ver en este JSFiddle
fuente
Puede establecer un intervalo que se ejecute cada 500 ms aproximadamente, siguiendo las líneas de lo siguiente:
No he probado este código, pero el principio debería funcionar.
fuente
Versión muy pequeña con capacidad de inicio y fin
fuente
Ok, esto es algo que he usado antes. Básicamente buscas mantener una referencia a la última
scrollTop()
. Una vez que se borra el tiempo de espera, verifica la corrientescrollTop()
y, si son iguales, termina el desplazamiento.fuente
Estilo ES6 con control de inicio de desplazamiento también.
Uso:
fuente
por favor revise el evento jquery mobile scrollstop
fuente
Para aquellos que todavía necesitan esto, aquí está la solución
fuente
Esto debería funcionar:
fuente
Así es como puede manejar esto:
fuente
Esto detecta la parada de desplazamiento después de 1 milisegundo (o lo cambia) usando un temporizador global:
fuente