Eu tenho um latejante que aparece quando um usuário clica em um link.
O problema é que esse mesmo link pode ser clicado e arrastado para ser reorganizado. Nesse caso, eu não precisaria que o latejante aparecesse. Ele só precisa aparecer se estiver realmente esperando para ir a algum lugar.
Como posso, com jQuery, criar um ouvinte de evento que só permitiria que um throbber apareça se for um clique para um link , e não um clique e arraste?
Respostas:
No mousedown, comece a definir o estado, se o evento mousemove for disparado grave-o, finalmente no mouseup, verifique se o mouse se moveu. Se mudou, estamos arrastando. Se não mexemos, é um clique.
Aqui está uma demonstração: http://jsfiddle.net/W7tvD/1399/
fonte
mousemove
ainda será disparado pelo menos uma vez, mesmo sem nenhum movimento, então mudei para incrementar a variável no movimento e, em seguida, verifiquei um certo limite emmouseup
jsfiddle.net/W7tvD/1649 Funciona como um encanto para mim agora, obrigado!Por algum motivo, as soluções acima não estavam funcionando para mim. Eu fui com o seguinte:
Você pode ajustar o limite de distância para o que quiser, ou mesmo levá-lo para zero.
fonte
sqrt
não é lento e não afetará a UX, nem mesmo se você fez isso centenas de vezes.Com o jQuery UI basta fazer isso!
fonte
Esta solução usa as funções "on" e "off" para vincular um evento de desassociação de um mousemove (vincular e desvincular estão obsoletos). Você também pode detectar a mudança nas posições xey do mouse entre dois eventos de movimento do mouse.
fonte
Experimente o seguinte: mostra quando está no estado 'arrastado'. ;) link de violino
fonte
Eu me desviei da resposta aceita para apenas correr quando o clique está sendo MANTIDO para baixo e arrastado .
Minha função estava funcionando quando eu não estava segurando o mouse. Este é o código atualizado se você também quiser esta funcionalidade:
fonte
Para esta maneira mais simples é tocar iniciar, tocar mover e tocar final. Isso está funcionando tanto para PC quanto para dispositivo de toque, basta verificar na documentação do jquery e espero que esta seja a melhor solução para você. boa sorte
fonte
Plugin jQuery baseado na resposta de Simen Echholt. Eu chamei de clique único.
Em uso:
^^
fonte
Certifique-se de definir o atributo draggable do elemento como false para que você não tenha efeitos colaterais ao ouvir eventos de mouseup:
Então, você pode usar jQuery:
fonte
Você precisa definir um cronômetro. Quando o cronômetro expirar, inicie o throbber e registre o clique. Quando ocorre o arrasto, limpe o cronômetro para que ele nunca termine.
fonte
Se você estiver usando jQueryUI - há um evento onDrag. Se não estiver, conecte seu ouvinte a mouseup (), e não a click ().
fonte
fonte
Você não precisa configurar a variável, você pode apenas definir se ela está se movendo no atributo de dados
fonte
Eu precisava de uma função que sempre acompanhasse a posição do mouse e detectasse arrastar para a esquerda, direita, cima e baixo. Também não é acionado com um clique, mas precisa de um movimento mínimo de 15 px
fonte