Comment obtenir le bouton de la souris cliqué en utilisant jQuery?
$('div').bind('click', function(){
alert('clicked');
});
cela est déclenché par un clic droit et gauche, quelle est la façon de pouvoir attraper le clic droit de la souris? Je serais heureux si quelque chose comme ci-dessous existe:
$('div').bind('rightclick', function(){
alert('right mouse button is pressed');
});
contextmenu
est natif du navigateur. en JavaScript natif, vous pouvez joindre à l'oncontextmenu
événement.Edit : je l'ai changé pour fonctionner pour les éléments ajoutés dynamiquement en utilisant
.on()
dans jQuery 1.7 ou supérieur:Démo: jsfiddle.net/Kn9s7/5
[Début du message original] C'est ce qui a fonctionné pour moi:
Dans le cas où vous êtes dans plusieurs solutions ^^
Edit : Tim Down soulève un bon point que ce ne sera pas toujours un
right-click
qui déclenche l'contextmenu
événement, mais aussi lorsque la touche de menu contextuel est enfoncée (ce qui est sans doute un remplacement pour aright-click
)la source
contextmenu
déclenchement de l' événement n'implique pas toujours que le bouton droit de la souris a été cliqué. L'approche correcte consiste à obtenir des informations sur les boutons à partir d'un événement de souris (click
dans ce cas).Vous pouvez facilement savoir quel bouton de la souris a été enfoncé en vérifiant la
which
propriété de l'objet événement sur les événements de la souris:la source
e.button==2
place.event.button
navigateurs est plus problématique queevent.which
les nombres utilisés pour les boutonsevent.button
varient. Jetez un oeil à cet article de janvier 2009 - unixpapa.com/js/mouse.htmlmouseup
vérifier qu'une personne a vraiment cliqué sur l'élément? Il y a beaucoup de fois si je clique accidentellement sur quelque chose, je peux empêcher le clic en maintenant le bouton de la souris enfoncé et en faisant glisser l'extérieur de l'élément.mouseup
est probablement un meilleur événement, ce n'est qu'un exemple de l'utilisation desevent.which
clics de sourisVous pouvez aussi
bind
àcontextmenu
etreturn false
:Démo: http://jsfiddle.net/maniator/WS9S2/
Ou vous pouvez créer un plugin rapide qui fait de même:
Démo: http://jsfiddle.net/maniator/WS9S2/2/
En utilisant
.on(...)
jQuery> = 1.7:Démo: http://jsfiddle.net/maniator/WS9S2/283/
la source
method.call(this, e);
place demethod();
That way,method
obtient la valeur correcte pourthis
et a également l'objet d'événement qui lui est transmis correctement.Mise à jour de l'état actuel des choses:
la source
event.which
a été introduite, ce qui élimine la compatibilité entre navigateurs.http://jsfiddle.net/SRX3y/8/
la source
Il y a beaucoup de très bonnes réponses, mais je veux juste aborder une différence majeure entre IE9 et IE <9 lors de l'utilisation
event.button
.Selon l'ancienne spécification Microsoft,
event.button
les codes diffèrent de ceux utilisés par le W3C. Le W3C ne considère que 3 cas:event.button === 1
event.button === 3
event.button === 2
Dans les explorateurs Internet plus anciens, cependant, Microsoft retourne un peu le bouton enfoncé et il y a 8 cas:
event.button === 0
ou 000event.button === 1
ou 001event.button === 2
ou 010event.button === 3
ou 011event.button === 4
ou 100event.button === 5
ou 101event.button === 6
ou 110event.button === 7
ou 111Malgré le fait que c'est théoriquement la façon dont cela devrait fonctionner, aucun Internet Explorer n'a jamais pris en charge les cas de deux ou trois boutons enfoncés simultanément. Je le mentionne parce que la norme W3C ne peut même pas théoriquement supporter cela.
la source
event.button === 0
ce qui n'est pas un bouton cliqué, brillant IEಠ_ಠ
Il me semble qu'une légère adaptation de la réponse de TheVillageIdiot serait plus nette:
EDIT: JQuery fournit un
e.which
attribut, renvoyant 1, 2, 3 pour le clic gauche, central et droit respectivement. Vous pouvez donc également utiliserif (e.which == 3) { alert("right click"); }
Voir aussi: réponses à "Déclenchement d'un événement onclick en utilisant le clic du milieu"
la source
event.which === 1
s'assure qu'il s'agit d'un clic gauche (lors de l'utilisation de jQuery).Mais vous devriez également penser aux touches de modification: ctrlcmdshiftalt
Si vous souhaitez uniquement capturer des clics gauche simples et non modifiés, vous pouvez faire quelque chose comme ceci:
la source
Si vous recherchez des "meilleurs événements de souris Javascript" qui permettent
Jetez un oeil à ce javascript normal croisé qui déclenche les événements ci-dessus et supprime le mal de tête. Copiez-le et collez-le simplement dans la tête de votre script, ou incluez-le dans un fichier
<head>
de votre document. Liez ensuite vos événements, reportez-vous au bloc de code suivant ci-dessous qui montre un exemple jquery de capture des événements et de déclenchement des fonctions qui leur sont attribuées, bien que cela fonctionne également avec la liaison javascript normale.Si vous êtes intéressé à le voir fonctionner, jetez un œil au jsFiddle: https://jsfiddle.net/BNefn/
Meilleur exemple d'événements de clic de souris (utilise jquery pour plus de simplicité, mais ce qui précède fonctionnera dans plusieurs navigateurs et déclenchera les mêmes noms d'événements, qu'IE utilise avant les noms)
Et pour ceux qui ont besoin de la version minifiée ...
la source
la source
la source
Avec jquery, vous pouvez utiliser
event object type
la source
il y a aussi un moyen de le faire sans JQuery!
Regarde ça:
la source
la source
Pour ceux qui se demandent s'ils devraient ou non utiliser
event.which
dans vanilla JS ou Angular : Il est maintenant obsolète, alors préférez utiliser à laevent.buttons
place.Remarque: Avec cette méthode et l' événement (mousedown) :
et (mouseup) l' événement ne renverra PAS les mêmes chiffres mais 0 place.
Source: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
la source
la source