2011-01-31 16 views

Respuesta

3

Si lo que desea es deshabilitar el comportamiento de enlace por defecto, se puede utilizar una combinación de delegate y event.preventDefault:

$('#container').delegate('a', 'click', function(e) { 
    if (linksDisabled) { 
     e.preventDefault(); 
    } 
}); 

A continuación, puede establecer linksDisabled (en un ámbito primario) a true o false en la otra manejadores de eventos según corresponda.

Si estos enlaces están haciendo cosas Javascripty, es un poco más complicado. Probablemente sea más fácil poner el cheque if (linksDisabled) en cada manejador de eventos.

+0

¿Hay una ventaja para el uso de 'preventDefault()' en lugar de 'return false; '? –

+2

@ Lèse majesté Permite que la propagación continúe. Personalmente, lo encuentro más intuitivo. Además, se puede invocar en cualquier punto del controlador de eventos, en lugar de solo al final. Esto no es relevante aquí, pero me gusta que mi código sea consistente. – lonesomeday

+0

Ese es un buen punto. No había pensado en eso. –

2

Prueba esto:

$("#YOUR_DIV a").click(function(){ 
return false; 
}) 
+0

Si hay otros controladores de eventos en los elementos, esto puede ejecutarse después de los demás y, por lo tanto, no tienen ningún efecto. – lonesomeday

+0

Esa podría ser una buena forma de deshabilitar los enlaces de JavaScript. Sin embargo, necesitarás una forma de asegurarte de que este controlador de eventos se dispare primero. –

Cuestiones relacionadas