mouseUp événement sur glisser
J'ai un lien qui a mousedown et mouseup gestionnaires afin d'animer quelques objets sur la page.
Lorsque vous faites glisser (drag and drop) lien feux événement mousedown, mais il n'a pas d'incendie mouseup lorsqu'il est relâché. est-il une solution pour ce problème?
Ici est un exemple, si vous cliquez sur le lien normalement cela fonctionne, mais lorsque vous faites glisser le lien de la souris jusqu'n'arrive pas:
source d'informationauteur Headshota
Vous devez vous connecter pour publier un commentaire.
Manipulation traîne
Quelque chose de crucial personne ne mentionne ici est qu'il y a réellement est un événement pour vous inscrire à la fin de glisser, qui, comme expliqué par les autres réponses, c'est ce qui se passe ici. L'événement est appelé
dragend
de sorte que vous pouvez simplement fairePour vous inscrire à la fin de la drague. L'inconvénient de cette est que vous allez encore voir une traînée de l'interface (en d'autres termes: le navigateur affiche une INTERFACE utilisateur pour avertir l'utilisateur qu'il est draggin).
L'enregistrement de la souris jusqu'à la
Il y a cependant aussi une façon de vous inscrire à la recherché de la souris de l'onduleur, il suffit d'annuler la faites glisser le comportement par
return
ingfalse
dans leclick
écouteur d'événement, puis inscrire lemouseup
sur ledocument
.La seule remarque que je me sens comme je dois faire, c'est que dans un stand alone jsfiddle cela a fonctionné parfaitement, dans mon propre code, il n'a pas, donc je suis à l'écoute pour le
mouseup
et ladragend
juste pour être sûr.Il semble que l'événement mouseup de ne pas être licencié en raison de votre souris a gauche le lien lorsque vous relâchez le bouton de gauche.
De http://www.quirksmode.org/js/events_mouse.html :
Peut-être que vous pouvez le faire à walkaround:
mousedown
cas , le document d'incendiemouseup
événement, vous pouvez penser que le lien est tirmouseup
événementCe que j'ai fait pour résoudre ce problème est d'associer un "mouseOut" de l'événement à chaque lien et vérifier si un lien a été pressé. Si elle le faisait, le mouseOut de corriger le positionnement du lien. Voici le code:
Ce que vous avez décrit est conscient de la conception.
Il a toujours été l'objectif est que si vous passez la souris sur un lien, un bouton, que ce soit et changer votre esprit avant que vous avez de la souris, vous pouvez déplacer le curseur hors de le lien ou le bouton, puis relâchez le bouton de la souris et de l'action - le lien, bouton, que ce soit - ne se produira pas.
C'est à dessein que la souris n'est pas envoyé à l'objet qui a reçu le bouton de la souris lorsque le curseur est déplacé hors de l'élément avant de la souris.
C'est une conception de l'interface utilisateur considération. C'est pourquoi vous devriez programme tel qu'il faut cliquer pour lancer juste au sujet de toute action, et pas seulement une souris vers le bas.
Je vous accorde qu'il peut y avoir des moments où vous souhaitez prendre des mesures sur une souris vers le bas, comme dans de glisser, mais c'est l'exception et quand c'est fait correctement, la souris sera vu - sauf dans certaines versions de IE lorsque la souris seront perdues si vous faites glisser le curseur hors de la page - en haut, à gauche ou à droite.
Si vous souhaitez déplacer des choses autour et être en mesure de voir la souris vers le haut, il est de loin préférable d'utiliser de divisions ou de tel que des choses comme les liens.
Liens sont destinés à être juste que: lien vers quelque chose. Oui, vous pouvez le code JavaScript à exécuter lorsque le lien est cliqué href="javascript:someFunction();" ou vous pouvez code onclick pour exécuter quelque chose ou même souris vers le haut plus bas. Cependant, le lien est destiné à faire quelque chose de ne pas être traîné.
Utilisation d'une division ou d'une plage et de la déplacer.
Bob
Si vous regardez de près à ce que le navigateur n', il "traîne" de l'objet DOM, dans mon cas, un lien, après la libération de la
mouseup
événement ne se déclenche pas pour les DOM objet (en dessous de la souris, lorsque vous faites glisser) ou le document (il ne semble pas à faire des bulles).ajoutant
draggable="false"
attr aide ...cependant, il existe encore un problème de l'utilisateur en soulignant/le choix de quelque chose avec le curseur et en faisant glisser l'élément sélectionné(s).
À l'aide de la
mouseout
événement contribue également.Si vous devez gérer les glisser dans jQuery pourquoi ne pas utiliser Déplaçable?