2010-06-04 9 views
6

He codificado un script jquery donde hay una pequeña cuadrícula en la pantalla y el uso de arrastrar y colocar usuarios puede colocar mosaicos en la cuadrícula (encaje en su lugar). Actualmente, si pasa el mouse sobre un mosaico, se desvanece en la opción de rotar, pero preferiría que pudiera hacer clic con el botón derecho para rotar (haciéndolo más natural). Entiendo que bloquear el clic derecho por completo es a menudo mal visto así que me preguntaba si era posible solo dentro de un elemento en particular, luego capturaba ese evento, hacía algo en JS y desactivaba el menú contextual. - eso funciona en todos los navegadores.JavaScript: Capturando clic derecho e inhabilitando el menú solo dentro de cierto elemento

En una nota lateral, actualmente estoy usando jQuery para efectos y javascript personalizado para arrastrar y soltar, ¿vale la pena mirar un plugin de jQuery para arrastrar y soltar?

Muchas gracias,

Respuesta

12

Para capturar el botón derecho del ratón, se puede utilizar este jQuery:

$('#gridID').bind('contextmenu', function(e) { 
    // do stuff here instead of normal context menu 
    return false; 
}); 

Esto funciona en Chrome, Firefox y Safari. No han probado IE . Funciona en IE también. La única advertencia es que aparentemente no funciona en Opera. Entonces, si puedes vivir con eso ...

+0

Esta respuesta no es válida, el menú contextual se activa con el mousedown derecho, no con el botón derecho. –

+0

Un poco áspero y quisquilloso para rechazar una respuesta que funciona. Tal vez la redacción es confusa, pero incluso la documentación de Mozilla dice "clic derecho" (https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu). De todos modos, el código se trata simplemente de capturar el evento "contextmenu" de un navegador y evitar que muestre el menú. – ryanulit

0

no soy un fan de la utilización del botón derecho del ratón en las páginas web. Sin embargo, si realmente quieres hacerlo, puedes atrapar el botón derecho del mouse como se describe en here. Podría bloquear el botón derecho del mouse (en otras palabras, devolver falso en su controlador de eventos) condicionalmente si el mouse está sobre sus celdas de la grilla.

En relación con su pregunta de bonificación: jquery ui has drag & drop functionality. Probablemente sea más fácil usar eso que hacer tu propio.

+0

Muchas gracias, siguiendo tu consejo, he estado mirando "arrastrable" y encontré esto http://jqueryui.com/demos/draggable/snap-to.html parece ser lo que necesito para arrastrar –

0

"¿vale la pena mirar un plugin jQuery para arrastrar y soltar?"

Sólo si usted no se propone su aplicación para ser utilizado en el iPhone OS con Safari, es decir, incluyendo el iPad, ver Safari Web Content Guide: Handling Events

Cuestiones relacionadas