¿Alguien sabe cómo deshabilitar un enlace en jquery SIN usar return false;
?
Específicamente, lo que estoy tratando de hacer es deshabilitar el enlace de un elemento, hacer clic en él usando jquery que activa algunas cosas, luego volver a habilitar ese enlace para que si se vuelve a hacer clic funcione de manera predeterminada.
Gracias. Dave
ACTUALIZACIÓN
Aquí está el código. Lo que debe hacer después de que .expanded
se haya aplicado la clase es volver a habilitar el enlace deshabilitado.
$('ul li').click(function(e) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
//return false;
});
Respuestas:
Eso evitará el comportamiento predeterminado de un hipervínculo, que es visitar el href especificado.
Del tutorial de jQuery :
Si desea hacerlo
preventDefault()
solo si se cumple una determinada condición (algo está oculto, por ejemplo), puede probar la visibilidad de su ul con la clase expandida . Si es visible (es decir, no está oculto), el enlace debería activarse normalmente, ya que la instrucción if no se ingresará y, por lo tanto, no se evitará el comportamiento predeterminado:fuente
Prueba esto:
EDITAR-
De su código actualizado:
fuente
href="#"
Para otros que vinieron aquí a través de Google como yo, aquí hay otro enfoque:
Recuerde: no solo esta es una clase CSS
pero también estos dos
para que pueda agregar y eliminar fácilmente más clases con jQuery. No es necesario tocar href ...
¡Amo jQuery! ;-)
fuente
on()
para filtrar todos losa.disabled
enlaces y evitar el defecto? Entonces, todo lo que tiene que hacer es activar / desactivar la clase deshabilitada y el enlace se manejará solo cuando esté "habilitado".if(disabledCondition)
== true
. :)if ($(this).hasClass('disabled')) { e.preventDefault(); }
?Aquí hay una solución alternativa css / jQuery que prefiero por su brevedad y sus secuencias de comandos minimizadas:
css:
jQuery:
fuente
.prop("tabindex", "-1");
después de laaddClass
Puede eliminar el clic para el enlace siguiendo;
Puede volver a habilitar el enlace siguiendo estos pasos,
No puede usar la propiedad 'deshabilitada' para los enlaces.
fuente
Si sigue la ruta href, puede guardarla
Deshabilitar:
Luego vuelva a habilitar usando:
En un caso, tuve que hacerlo de esta manera porque los eventos de clic ya estaban vinculados en otro lugar y no tenía control sobre ello.
fuente
Siempre uso esto en jQuery para deshabilitar enlaces
fuente
$("form a").attr("disabled", false);
para habilitarlo nuevamenteejemplo de enlace html:
usa esto en jQuery
agregue esto a css:
fuente
pointer-events: none
propiedad de los elementos de anclaje, vuelven a hacer lo que hicieron previamente al hacer clic. Por lo tanto, si se tratara de hipervínculos básicos, volverían a navegar a la URL en suhref
atributo, y si tienen un controlador de eventos de clic establecido, se volverá a activar. Mucho más simple que guardarhref
valores y controladores de clics.Mi favorito en "finalizar la compra para editar un elemento y evitar los clics en el salvaje oeste salvaje a cualquier lugar" mientras está en la finalización de la compra
Entonces, si deseo que todos los enlaces externos en una segunda barra de herramientas de acción se desactiven en el "modo de edición" como se describió anteriormente, agregaré la función de edición
Ejemplo de enlace después del fuego:
Y ahora PUEDES usar propiedades deshabilitadas para enlaces
¡Salud!
fuente
Deberías encontrar tu respuesta aquí .
Gracias @Will y @Matt por esta elegante solución.
fuente
solo puedes ocultar y mostrar el enlace como quieras
fuente
Solo dispara cosas, establece alguna bandera, devuelve falso. Si la bandera está activada, no haga nada.
fuente
unbind()
fue desaprobadojQuery 3
, utilice eloff()
método en su lugar:fuente
Sé que esto no es con jQuery, pero puede deshabilitar un enlace con algunos css simples:
el HTML se vería así
fuente
Esto funciona para enlaces que tienen el atributo onclick establecido en línea. Esto también le permite eliminar más tarde el "return false" para habilitarlo.
fuente
Solo úsalo
$("a").prop("disabled", true);
. Esto realmente deshabilitará el elemento de enlace. Necesita serprop("disabled", true)
. No usarattr("disabled", true)
fuente