Ok com isso ..
$(window).scroll(function()
{
$('.slides_layover').removeClass('showing_layover');
$('#slides_effect').show();
});
Posso dizer quando alguém está rolando pelo que entendi. Então, estou tentando descobrir como pegar quando alguém parou. No exemplo acima, você pode ver que estou removendo uma classe de um conjunto de elementos enquanto a rolagem está ocorrendo. No entanto, quero colocar essa classe de volta quando o usuário parar de rolar.
O motivo para isso é que pretendo fazer um show de espera enquanto a página rola para dar à página um efeito especial que estou tentando trabalhar. Mas a única classe que estou tentando remover durante a rolagem está em conflito com esse efeito, pois é um efeito de transparência para alguma natureza.
javascript
jquery
scroll
jquery-events
chris
fonte
fonte
Respostas:
Atualizar
Eu escrevi uma extensão para aprimorar o
on
manipulador de eventos padrão do jQuery . Ele anexa uma função de manipulador de eventos para um ou mais eventos aos elementos selecionados e chama a função de manipulador se o evento não foi disparado por um determinado intervalo. Isso é útil se você deseja disparar um retorno de chamada somente após um atraso, como o evento de redimensionamento ou algo semelhante.É importante verificar o github-repo para atualizações!
https://github.com/yckart/jquery.unevent.js
Use-o como qualquer outro gerenciador de evento
on
oubind
, exceto que você pode passar um parâmetro extra como último:http://yckart.github.com/jquery.unevent.js/
(esta demonstração usa em
resize
vez descroll
, mas quem se importa ?!)fonte
Usando jQuery throttle / debounce
jQuery debounce é bom para problemas como este. jsFidlle
O segundo parâmetro é o sinalizador "at_begin". Aqui, mostrei como executar código tanto no "início da rolagem" quanto no "final da rolagem".
Usando Lodash
Como sugerido por Barry P, jsFiddle , underscore ou lodash também têm um debounce, cada um com apis ligeiramente diferente.
fonte
leading
etrailing
, em seguida, certifique-se de que não pode haver confusão.Rob W sugeriu que eu desse uma olhada em outra postagem aqui na pilha que era essencialmente uma postagem semelhante à minha original. Lendo isso, encontrei um link para um site:
http://james.padolsey.com/javascript/special-scroll-events-for-jquery/
Na verdade, isso acabou ajudando a resolver meu problema muito bem depois de alguns ajustes para minhas próprias necessidades, mas, acima de tudo, ajudou a tirar muitas gargalhadas do caminho e me poupou cerca de 4 horas para descobrir por conta própria.
Vendo que esta postagem parece ter algum mérito, resolvi voltar e fornecer o código encontrado originalmente no link mencionado, caso o autor alguma vez decidisse seguir uma direção diferente com o site e acabasse retirando o link.
fonte
Concordei com alguns dos comentários acima que ouvir um tempo limite não foi preciso o suficiente, pois isso será acionado quando você parar de mover a barra de rolagem por tempo suficiente, em vez de quando você parar de rolar. Acho que a melhor solução é ouvir o usuário soltando o mouse (mouseup) assim que começa a rolar:
e um exemplo de como ele funciona pode ser visto neste JSFiddle
fonte
Você pode definir um intervalo que é executado a cada 500 ms ou mais, nas linhas do seguinte:
Não testei este código, mas o princípio deve funcionar.
fonte
Versão muito pequena com capacidade de início e fim
fonte
Ok, isso é algo que eu usei antes. Basicamente, você olha um árbitro até o fim
scrollTop()
. Assim que o tempo limite for apagado, você verifica os atuaisscrollTop()
e, se eles são iguais, a rolagem é concluída.fonte
Estilo ES6 com verificação de início de rolagem também.
Uso:
fonte
por favor, verifique o evento jquery mobile scrollstop
fonte
Para quem ainda precisa, aqui está a solução
fonte
Isso deve funcionar:
fonte
Veja como você pode lidar com isso:
fonte
Isso detecta a parada de rolagem após 1 milissegundo (ou altere-o) usando um cronômetro global:
fonte