2009-06-08 13 views
9

tengo unas pocas cosas en este momento:¿Cómo detectar el clic izquierdo en cualquier parte del documento usando jQuery?

$(document).click(function(e) { alert('clicked'); }); 

En Firefox, este evento está disparando cuando me fui clic o clic derecho. Solo quiero que se dispare cuando hago clic izquierdo.

¿Conectar un manejador de clics al documento funciona de forma diferente que unirlo a otros elementos? Para otros elementos, solo parece disparar con clics izquierdos.

¿Hay alguna manera de detectar solo clicks izquierdos además de mirar e.button, que depende del navegador?

Gracias

Respuesta

20

Prueba

$(document).click(function(e) { 
    // Check for left button 
    if (e.button == 0) { 
     alert('clicked'); 
    } 
}); 

Sin embargo, parece que hay cierta confusión en cuanto a si el IE devuelve 1 o 0 como clic izquierdo, puede que tenga que probar esta :)

Más leyendo aquí: jQuery Gotcha

EDIT: se perdió el bit donde pidió no usar e.button. ¡Lo siento!

Sin embargo, el ejemplo here devuelve la misma ID independientemente de mirarla en FF o IE, y usa e.button. podría haber actualizado el marco jQuery? La otra respuesta es que las versiones anteriores de IE devuelven un valor diferente, lo que sería un dolor. Lamentablemente, solo tengo IE 7/8 aquí para probar.

+1

Parece que el controlador de clic funciona de manera diferente según el elemento al que está conectado. Para el elemento de documento, maneja los clics izquierdo y derecho, por lo que no parece haber ninguna manera de comprobar e.button. – Emmett

+0

e.button es incorrecto, debe ser e.which –

0

He leído que si enlaza con "live" en jQuery 1.3, jQuery normaliza el clic entre los navegadores. No he probado esto.

Sin embargo, esto indicaría que no es así: http://abeautifulsite.net/notebook/99

Desde dices clic funciona correctamente en todas partes menos en "documento", han intentado un div 100% sobre el documento para coger el clic?

0

No hay una forma no dependiente del navegador para detectar solo los clics hacia la izquierda. Se puede utilizar este código, que funciona bajo el IE y navegadores no-IE:

$("#element").live('click', function(e) { 

    if((!$.browser.msie && e.button == 0) || ($.browser.msie && e.button == 1)) { 

     // Left mouse button was clicked (all browsers) 

    } 

}); 

Tomado de: http://abeautifulsite.net/notebook/99

Cuestiones relacionadas