En mi página tengo muchos elementos diversos que responden a los eventos de clic. Hay momentos en los que necesito bloquear todos los clics en función de alguna bandera global. ¿Hay alguna forma de que pueda hacer esta verificación en una ubicación centralizada?jQuery: ¿Atrapa todos los eventos de clic antes de que sucedan?
Ahora mismo en cada caso puedo comprobar por la bandera, por ejemplo:
var canClick = false; // Global flag
// Sample click event:
$("#someDiv").click(function(){
if(!canClick) return;
// Some stuff ...
});
Lo que me gustaría hacer es tener un elemento que atrapa todos los eventos de clic antes de cualquier otro elemento.
Intenté hacerlo en documento pero estos eventos solo ocurren después de los otros eventos de clic.
Ejemplo:
$("#someDiv").click(function(){ console.log("someDiv click"); });
$(document).click(function(){ console.log("Document click"); });
// When I click on the someDiv element it prints:
> someDiv click
> Document click
También intenté poner un div pantalla completa por encima de todo y usando esto para eventos de trampa, pero el problema no era que ninguno de los clics se está propagando a través de este div pantalla completa. Además, no quiero confiar en la creación de elementos adicionales para atrapar clics, ya que se siente un poco hacky.
¿Podría quizás sobreescribir la función de clic de jQuery para poder poner mi pequeño cheque allí?
¿Hay algo obvio que me falta aquí?
Gracias por cualquier ayuda.
Ahh brillante! Muchas gracias, señor. Funciona en Chrome 11, es el único navegador con el que necesito que sea compatible. Aclamaciones. – nebs
Para cualquier persona que necesite compatibilidad entre navegadores, IE <9 no lo admite – opsb