¿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');
});
contextmenu
es nativo del navegador. en JavaScript nativo puedes adjuntarlo aloncontextmenu
evento.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-click
que desencadena elcontextmenu
evento, sino también cuando se presiona la tecla del menú contextual (que posiblemente sea un reemplazo para aright-click
)fuente
contextmenu
activació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 (click
en este caso).Puede saber fácilmente qué botón del mouse se presionó al verificar la
which
propiedad del objeto de evento en los eventos del mouse:fuente
e.button==2
lugar, se está utilizando el complemento jQuery vinculado anteriormente .event.button
navegador cruzado es más problemático que el hecho deevent.which
que los números utilizados para los botonesevent.button
varían. Eche un vistazo a este artículo de enero de 2009 - unixpapa.com/js/mouse.htmlmouseup
verificar 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.mouseup
es probablemente un evento mejor, este es solo un ejemplo del uso deevent.which
los clics del botón del mouseTambién puede hacer
bind
quecontextmenu
ereturn 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,method
obtiene el valor correctothis
y también le pasa el objeto de evento correctamente.Actualización para el estado actual de las cosas:
fuente
event.which
se 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.button
los códigos difieren de los utilizados por W3C. El W3C considera solo 3 casos:event.button === 1
event.button === 3
event.button === 2
Sin embargo, en los exploradores de Internet más antiguos, Microsoft está cambiando un poco el botón presionado y hay 8 casos:
event.button === 0
o 000event.button === 1
o 001event.button === 2
o 010event.button === 3
o 011event.button === 4
o 100event.button === 5
o 101event.button === 6
o 110event.button === 7
o 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 === 0
que 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.which
atributo, 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 === 1
asegura 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 type
fuente
¡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.which
en Vanilla JS o Angular : ahora está en desuso, así que prefieren usarlo en suevent.buttons
lugar.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