J'ai un throbber qui doit apparaître lorsqu'un utilisateur clique sur un lien.
Le problème est que ce même lien peut être cliqué et déplacé pour être réorganisé. Dans ce cas, je n'aurais pas besoin du throbber pour apparaître. Il n'a besoin d'apparaître que s'il attend réellement d'aller quelque part.
Comment puis-je, avec jQuery, créer un écouteur d'événements qui ne permettrait à un throbber d'apparaître que s'il s'agit d'un clic vers un lien , et non d'un clic et d'un glisser?
Réponses:
Sur mousedown, commencez à définir l'état, si l'événement mousemove est déclenché, enregistrez-le, enfin sur mouseup, vérifiez si la souris a bougé. S'il a bougé, nous avons traîné. Si nous n'avons pas bougé, c'est un clic.
Voici une démo: http://jsfiddle.net/W7tvD/1399/
la source
mousemove
sera toujours déclenché au moins une fois même sans aucun mouvement, alors je l'ai changé pour incrémenter la variable sur le mouvement, puis vérifier un certain seuil surmouseup
jsfiddle.net/W7tvD/1649 Fonctionne comme un charme pour moi maintenant, merci!Pour une raison quelconque, les solutions ci-dessus ne fonctionnaient pas pour moi. Je suis allé avec ce qui suit:
Vous pouvez ajuster la limite de distance à ce que vous voulez, ou même la ramener à zéro.
la source
sqrt
n'est pas lent et n'affectera pas l'UX, même si vous l'avez fait des centaines de fois.Avec jQuery UI, faites cela!
la source
Cette solution utilise les fonctions "on" et "off" pour lier un événement de détachement d'un mousemove (la liaison et la dissociation sont obsolètes). Vous pouvez également détecter le changement des positions x et y de la souris entre deux événements mousemove.
la source
Essayez ceci: il montre quand est l'état «glissé». ;) lien violon
la source
J'ai bifurqué de la réponse acceptée pour ne courir que lorsque le clic est maintenu vers le bas et traîné .
Ma fonction fonctionnait alors que je ne tenais pas la souris enfoncée. Voici le code mis à jour si vous souhaitez également cette fonctionnalité:
la source
Pour ce moyen le plus simple, touchez le début, touchez le mouvement et touchez la fin. Cela fonctionne à la fois pour le PC et le périphérique tactile, il suffit de le vérifier dans la documentation jquery et j'espère que c'est la meilleure solution pour vous. bonne chance
la source
Plugin jQuery basé sur la réponse de Simen Echholt. Je l'ai appelé un seul clic.
Utilisé:
^^
la source
Assurez-vous de définir l' attribut déplaçable de l'élément sur false afin de ne pas avoir d'effets secondaires lors de l'écoute des événements mouseup:
Ensuite, vous pouvez utiliser jQuery:
la source
Vous devez régler une minuterie. Lorsque la minuterie expire, démarrez le throbber et enregistrez le clic. Lorsqu'un glissement se produit, effacez le minuteur pour qu'il ne se termine jamais.
la source
Si vous utilisez jQueryUI, il existe un événement onDrag. Si ce n'est pas le cas, attachez votre auditeur à mouseup (), et non à cliquer ().
la source
la source
Vous n'avez pas à configurer la variable, vous pouvez simplement définir si elle se déplace dans l'attribut de données
la source
J'avais besoin d'une fonction qui garde toujours la trace de la position de la souris et détecte le glissement vers la gauche, la droite, le haut et le bas. Il ne se déclenche pas non plus au clic mais nécessite un déplacement minimum de 15 pixels
la source