Comment puis-je faire avec jQuery pour qu'un événement mousemove ne soit actif que si le bouton gauche de la souris est maintenu enfoncé, et dès que le bouton est relâché, l'événement mousemove s'arrête?jQuery: une question sur les événements
Répondre
La manière la plus simple est de conserver un drapeau, qui est défini sur vrai seulement pendant que le bouton gauche est maintenu enfoncé. Cela signifie que vous devez le définir sur true lorsque le bouton gauche de la souris est enfoncé et le réinitialiser sur false lorsqu'il est relâché. Alors vous agissez sur mousemove seulement si ce drapeau est vrai.
Ce n'est pas une solution spécifique à jQuery, mais un modèle générique pour des problèmes comme celui-ci, donc jQuery pourrait fournir une meilleure solution.
Vous devrez peut-être prendre en charge des cas spéciaux, tels que la perte du focus d'entrée ou le déplacement du curseur de la souris en dehors de ce div tandis que le bouton gauche est maintenu enfoncé.
Ici, je lie l'événement mousemove
sur mousedown, et je le délie sur mouseup
. J'ai utilisé une fonction sympa dans jQuery pour que d'autres événements mousemove puissent être ajoutés à ce sélecteur, mais seul celui que vous souhaitez annuler est supprimé. Ils sont appelés Namespaced Events.
$("#yourdivid").mousedown(function(e){
if(e.which == 1){
$(this).bind('mousemove.coolnamespace', function(e){
// Your mousemove event
});
}
}).mouseup(function(e){
if(e.which == 1) $(this).unbind('mousemove.coolnamespace');
})
Edit: Je mis à jour ma réponse à utiliser le champ normalisé which
. jQuery normalise ceci à 1 = Gauche, 2 = Moyen, 3 = Droite. La valeur button
sera différente selon le navigateur.
Vous liez l'événement mousedown et appelez mousemove à l'intérieur de cette fonction, et utilisez l'événement jQuery unbind pour vous débarrasser de la souris;
var $button = $("ELEMENT HERE");
$button.mousedown(function(){
$(this).mousemove(function(){
//Events here
});
}).mouseup(function(){
$(this).unbind("mousemove");
});
- 1. question jquery pour les événements
- 2. C# Question sur les événements
- 3. Question sur les événements personnalisés
- 4. Question sur les événements et les contrôles du serveur personnalisé
- 5. événements Jquery sur CKeditor
- 6. Question de conception sur les événements de protocole tampon
- 7. Jquery sélectionner les événements
- 8. Comment lier les événements jQuery sur plusieurs objets prédéfinition jQuery
- 9. découpage en tranches jQuery et cliquez sur les événements
- 10. jquery autocomplete question sur les données feed
- 11. jQuery: question sur les enfants() fonction
- 12. Événements de liaison jquery sur l'onglet sélectionné
- 13. une petite question sur les vulnérabilités XSS
- 14. Les événements jQuery bloquent-ils
- 15. jQuery demande ajax pas tirer sur les événements ultérieurs
- 16. JQUERY Cliquez sur les événements pour plusieurs images
- 17. question A jQuery sur les variables et les sélecteurs
- 18. jQuery Sélecteur et événements
- 19. simple question sur sélecteur jquery
- 20. JQuery souris sur la question
- 21. Les événements jQuery me frappent au visage
- 22. une question sur les préchargeurs flex
- 23. une question sur les formes en PowerShell
- 24. Comment intercepter tous les événements jquery ajax?
- 25. Les événements du plugin jQuery se déclenchent une seule fois
- 26. Comment utiliser les événements est jquery plugin?
- 27. question sur les URL
- 28. Jquery fullcalendar ne montrant pas les événements
- 29. Jquery fullcalendar n'affiche pas les événements
- 30. jQuery + diapositives événements
Il suffit de se lier à '' mousemove' sur mousedown' et UNBIND sur 'mouseup'. –