¿Cómo se obtiene el botón del mouse con jQuery?
$('div').bind('click', function(){
alert('clicked');
});
Esto se activa por el clic derecho y el izquierdo, ¿cuál es la forma de capturar el clic derecho del mouse? Sería feliz si algo como a continuación existe:
$('div').bind('rightclick', function(){
alert('right mouse button is pressed');
});

contextmenues nativo del navegador. en JavaScript nativo puedes adjuntarlo aloncontextmenuevento.Editar : lo cambié para que funcione para elementos agregados dinámicamente usando
.on()jQuery 1.7 o superior:Demostración: jsfiddle.net/Kn9s7/5
[Inicio de la publicación original] Esto es lo que funcionó para mí:
En caso de que estés en múltiples soluciones ^^
Editar : Tim Down trae a colación un buen punto de que no siempre será un evento
right-clickque desencadena elcontextmenuevento, sino también cuando se presiona la tecla del menú contextual (que posiblemente sea un reemplazo para aright-click)fuente
contextmenuactivación del evento no siempre implica que se hizo clic en el botón derecho del mouse. El enfoque correcto es obtener información del botón de un evento del mouse (clicken este caso).Puede saber fácilmente qué botón del mouse se presionó al verificar la
whichpropiedad del objeto de evento en los eventos del mouse:fuente
e.button==2lugar, se está utilizando el complemento jQuery vinculado anteriormente .event.buttonnavegador cruzado es más problemático que el hecho deevent.whichque los números utilizados para los botonesevent.buttonvarían. Eche un vistazo a este artículo de enero de 2009 - unixpapa.com/js/mouse.htmlmouseupverificar que una persona realmente haya hecho clic en el elemento? Hay muchas veces que si accidentalmente hago clic en algo, puedo evitarlo presionando el botón del mouse y arrastrando fuera del elemento.mouseupes probablemente un evento mejor, este es solo un ejemplo del uso deevent.whichlos clics del botón del mouseTambién puede hacer
bindquecontextmenuereturn false:Demostración: http://jsfiddle.net/maniator/WS9S2/
O puede hacer un complemento rápido que haga lo mismo:
Demostración: http://jsfiddle.net/maniator/WS9S2/2/
Usando
.on(...)jQuery> = 1.7:Demostración: http://jsfiddle.net/maniator/WS9S2/283/
fuente
method.call(this, e);lugar demethod();esa forma,methodobtiene el valor correctothisy también le pasa el objeto de evento correctamente.Actualización para el estado actual de las cosas:
fuente
event.whichse ha introducido, lo que elimina la compatibilidad entre navegadores.http://jsfiddle.net/SRX3y/8/
fuente
Hay muchas respuestas muy buenas, pero solo quiero mencionar una diferencia importante entre IE9 e IE <9 cuando uso
event.button.De acuerdo con la antigua especificación de Microsoft para
event.buttonlos códigos difieren de los utilizados por W3C. El W3C considera solo 3 casos:event.button === 1event.button === 3event.button === 2Sin embargo, en los exploradores de Internet más antiguos, Microsoft está cambiando un poco el botón presionado y hay 8 casos:
event.button === 0o 000event.button === 1o 001event.button === 2o 010event.button === 3o 011event.button === 4o 100event.button === 5o 101event.button === 6o 110event.button === 7o 111A pesar de que, en teoría, así es como debería funcionar, ningún Internet Explorer ha admitido los casos de dos o tres botones presionados simultáneamente. Lo estoy mencionando porque el estándar W3C ni siquiera teóricamente puede soportar esto.
fuente
event.button === 0que no se hace clic en ningún botón, brillante IEಠ_ಠMe parece que una ligera adaptación de la respuesta de TheVillageIdiot sería más limpia:
EDITAR: JQuery proporciona un
e.whichatributo, devolviendo 1, 2, 3 para el clic izquierdo, medio y derecho, respectivamente. Entonces también podrías usarif (e.which == 3) { alert("right click"); }Consulte también: respuestas a "Activación de evento onclick con clic medio"
fuente
event.which === 1asegura que sea un clic izquierdo (cuando se usa jQuery).Pero también debes pensar en las teclas modificadoras: ctrlcmdshiftalt
Si solo está interesado en capturar clics izquierdos simples y no modificados, puede hacer algo como esto:
fuente
Si está buscando "Mejores eventos de mouse Javascript" que permitan
Eche un vistazo a este JavaScript normal entre navegadores que desencadena los eventos anteriores y elimina el dolor de cabeza. Simplemente cópielo y péguelo en el encabezado de su script, o inclúyalo en un archivo en el
<head>su documento. Luego, vincule sus eventos, consulte el siguiente bloque de código a continuación que muestra un ejemplo jquery de capturar los eventos y activar las funciones que se les asignaron, aunque esto también funciona con el enlace normal de JavaScript.Si está interesado en verlo funcionar, eche un vistazo a jsFiddle: https://jsfiddle.net/BNefn/
Ejemplo de mejores eventos de clic del mouse (usa jquery para simplificar, pero lo anterior funcionará en varios navegadores y disparará los mismos nombres de eventos, IE los usa antes que los nombres)
Y para aquellos que necesitan la versión minificada ...
fuente
fuente
fuente
Con jquery puedes usar
event object typefuente
¡También hay una manera de hacerlo sin JQuery!
mira esto:
fuente
fuente
Para aquellos que se preguntan si deberían usarlo o no
event.whichen Vanilla JS o Angular : ahora está en desuso, así que prefieren usarlo en suevent.buttonslugar.Nota: Con este método y evento (mousedown) :
y el evento (mouseup) NO devolverá los mismos números sino 0 en su lugar.
Fuente: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons
fuente
fuente