<a href="gohere.aspx" class="my-link">Click me</a>
Hice
$('.my-link').attr('disabled', true);
pero no funcionó
¿Hay alguna manera fácil de deshabilitar el hipervínculo usando jquery? ¿Eliminar href? Preferiría no jugar con href. Entonces, si puedo hacerlo sin eliminar href, sería genial.
Puede vincular un controlador de clics que devuelve falso:
$('.my-link').click(function () {return false;});
Para volver a habilitarlo nuevamente, desvincule el controlador:
$('.my-link').unbind('click');
Tenga en cuenta que disabled
no funciona porque está diseñado solo para entradas de formulario.
jQuery ya ha anticipado esto, proporcionando un atajo a partir de jQuery 1.4.3:
$('.my-link').bind('click', false);
Y para desvincular / volver a habilitar:
$('.my-link').unbind('click', false);
Sé que es una vieja pregunta, pero parece que todavía no está resuelta. Sigue mi solución...
Simplemente agregue este controlador global:
$('a').click(function() { return ($(this).attr('disabled')) ? false : true; });
Aquí hay una demostración rápida: http://jsbin.com/akihik/3
incluso puede agregar un poco de css para darle un estilo diferente a todos los enlaces con el atributo deshabilitado.
p.ej
a[disabled] { color: grey; }
De todos modos, parece que el atributo deshabilitado no es válido para a
etiqueta. Si prefiere seguir las especificaciones de w3c, puede adoptar fácilmente un atributo data-disabled
compatible con html5. En este caso, debe modificar el fragmento anterior y usar $(this).data('disabled')
.
Eliminar el atributo href
definitivamente parece ser el camino a seguir. Si por alguna razón lo necesita más tarde, simplemente lo almacenaría en otro atributo, por ejemplo
$(".my-link").each(function() { $(this).attr("data-oldhref", $(this).attr("href")); $(this).removeAttr("href"); });
Esta es la única forma de hacerlo que hará que el enlace también aparezca deshabilitado sin escribir CSS personalizado. Simplemente vincular un controlador de clics a falso hará que el enlace parezca un enlace normal, pero no sucederá nada al hacer clic en él, lo que puede resultar confuso para los usuarios. Si va a seguir la ruta del controlador de clics, al menos también .addClass("link-disabled")
y escribiría algo de CSS que haga que los enlaces con esa clase aparezcan como texto normal.