2009-07-23 27 views
8

Quiero desactivar el enlace durante la carga, para el código que figura a continuaciónjQuery etiqueta de enlace habilitar bloquear

<span id="addlink">"<%= f.add_associated_link('Add Task', @project.tasks.build, :class=>"add") %></span> 

he probado con los siguientes códigos, pero no funcionó

$("#addlink").attr("disabled", "disabled"); 

y

$("a.add").hide(); 
+0

¿Podría proporcionarnos algún código de ejemplo, por favor? Como el enlace que produjo. –

+0

posible duplicado de [cómo habilitar o deshabilitar la etiqueta delimitadora utilizando jquery] (http://stackoverflow.com/questions/1164635/how-to-enable-or-disable-anchor-tag-using-jquery) –

Respuesta

4
$('#addlink').click(function(e) { 
    e.preventDefault(); 
    //do other stuff when a click happens 
}); 

return false;

evitará que el evento predeterminado desde que ocurren y y también evitar que el evento burbujeando

Así eligiendo entre estos dos depende de su uso. Si desea detener la acción por defecto y también tienen que brotan del evento a continuación, utilizar preventDefault

+0

Si define es así que no puedes desvincularlo fácilmente si quieres restaurar el comportamiento predeterminado más adelante. – RaYell

27
function disableLink(e) { 
    // cancels the event 
    e.preventDefault(); 

    return false; 
} 

Cuando se desea desactivarlo años llamada

$('#addlink').bind('click', disableLink); 

Cuando desea habilitar discapacitados enlace se llama

$('#addlink').unbind('click', disableLink); 
+0

¡La mejor solución que he visto! ¡guay! ¡Gracias! – Burjua

+0

Esta es la mejor respuesta que yo haya visto. – User16119012

2

me gustaría ir con un híbrido de RaYell de solución y de Phoenix, añadiendo a la mezcla jQuery's namespacing:

$('#addlink').bind('click.killlink',function(event){ 
    event.preventDefault(); 
    // You can do any additional onClick behavior here 
}); 

para desenlazar este evento, así como cualesquiera otros acontecimientos relacionados (de cualquier tipo) que el grupo con el espacio de nombres .killink, que había corrido la siguiente:

$('#addlink').unbind('.killlink'); 

como Phoenix señaló, usando return false evitará que el evento burbujee. preventDefault() tiene el beneficio adicional de ser extremadamente explícito (a diferencia de return false, que puede significar muchas cosas diferentes según el contexto).

Cuestiones relacionadas