Tengo un enlace de ancla que quiero deshabilitar una vez que el usuario hace clic en él. O elimine la etiqueta de anclaje alrededor del texto, pero definitivamente conserve el texto.
<a href='' id='ThisLink'>some text</a>
Puedo hacer esto fácilmente con un botón agregando .attr("disabled", "disabled");
que agregué con éxito la propiedad deshabilitada, pero aún se podía hacer clic en el enlace.
Realmente no me importa si el texto está subrayado o no.
¿Cualquier pista?
Cuando haces clic en el músico equivocado, debería simplemente agregar "Wrong" y luego no se puede hacer clic.
Cuando hace clic y está en lo correcto, debe agregar "Impresionante" y luego deshabilitar todas las <a>
etiquetas.
Respuestas:
Me acabo de dar cuenta de lo que estabas pidiendo (espero). Aquí hay una fea solución
var preventClick = false; $('#ThisLink').click(function(e) { $(this) .css('cursor', 'default') .css('text-decoration', 'none') if (!preventClick) { $(this).html($(this).html() + ' lalala'); } preventClick = true; return false; });
fuente
El método más limpio sería agregar una clase con eventos de puntero: ninguno cuando desee deshabilitar un clic. Funcionaría como una etiqueta normal.
.disableClick{ pointer-events: none; }
fuente
pointer-events:none
también desactivará elcursor
texto del título y otros eventos de mouseover.<a href='javascript:void(0);'>some text</a>
fuente
javascript: URI
, evalúa el código en el URI y luego reemplaza el contenido de la página con el valor devuelto, a menos que el valor devuelto seaundefined
. Elvoid
operador se puede utilizar para regresarundefined
. Por ejemplo: tenga en<a href="javascript:void(0);">
Click here to do nothing
</a>
cuenta, sin embargo, quejavascript:
se desaconseja el pseudo protocolo frente a otras alternativas, como los controladores de eventos discretos.Utilice el estilo CSS de eventos de puntero . (como sugirió Jason MacDonald)
Consulte MDN https://developer.mozilla.org/en-US/docs/Web/CSS/pointer-events . Es compatible con la mayoría de los navegadores.
La simple adición del atributo "deshabilitado" al ancla hará el trabajo si tiene una regla CSS global como la siguiente:
a[disabled], a[disabled]:hover { pointer-events: none; color: #e1e1e1; }
fuente
$("#elementid").attr("disabled", "disabled");
. También puede ser útil incluirlocursor: default
en el CSS (como sugirió Muhammad Nasir).<a />
elementos no tienen un atributo deshabilitado, parece extraño.$('a').removeAttr('href')
o
$('a').click(function(){ return false})
Depende de la situación
fuente
Bootstrap nos da
.disabled
clase. Por favor utilícelo.Pero la
.disabled
clase solo funciona cuando la etiqueta 'a' ya tiene la clase 'btn'. No funciona con ninguna etiqueta "a" antigua. Labtn
clase puede no ser apropiada en algún contexto ya que tiene connotaciones de estilo. Bajo las sábanas, la.disabled
clase se establecepointer-events
ennone
, por lo que puede hacer que CSS haga lo mismo que Saroj Aryal y Vitrilo han sugerido. (Gracias, Les Nightingill por este consejo).fuente
Agregar una
css
clase:.disable_a_href{ pointer-events: none; }
Agrega esto
jquery
:$("#ThisLink").addClass("disable_a_href");
fuente
Simplemente elimine el
href
atributo de la etiqueta de anclaje.fuente
La mejor forma es evitar la acción predeterminada. En el caso de la etiqueta de ancla, el comportamiento predeterminado es redirigir a la
href
dirección especificada.Entonces, seguir javascript funciona mejor en la situación:
$('#ThisLink').click(function(e) { e.preventDefault(); });
fuente
Puede usar el evento onclick para deshabilitar la acción de clic:
<a href='' id='ThisLink' onclick='return false'>some text</a>
O simplemente podría usar algo más que una
<a>
etiqueta.fuente
text-decoration: none
y.disabledLink { color: #000 !important; }
para que parezca texto normal.Los comentarios de Jason MacDonald funcionaron para mí, probados en Chrome, Mozila e IE.
Se agregó color gris para mostrar el efecto de desactivación.
.disable_a_href{ pointer-events: none; **color:#c0c0c0 !important;** }
Jquery estaba seleccionando solo el primer elemento en la lista de anclajes, agregó metacarácter (*) para seleccionar y deshabilitar todos los elementos con id
#ThisLink
.$("#ThisLink*").addClass("disable_a_href");
fuente
Escriba esto una sola línea de código jQuery
$('.hyperlink').css('pointer-events','none');
si quieres escribir en un archivo css
.hyperlink{ pointer-events: none; }
fuente
Cree la siguiente clase en la hoja de estilo:
.ThisLink{ pointer-events: none; cursor: default; }
Agregue esta clase a su enlace dinámicamente de la siguiente manera.
<a href='' id='elemID'>some text</a> // or using jquery <script> $('#elemID').addClass('ThisLink'); </script>
fuente
Prueba esto:
$('a').contents().unwrap();
fuente
Simplemente en SASS:
.some_class{ // styles... &.active { pointer-events:none; } }
fuente
Este es el método que utilicé para desactivar. Espero que ayude.
$("#ThisLink").attr("href","javascript:;");
fuente
$('#ThisLink').one('click',function(){ $(this).bind('click',function(){ return false; }); });
Esta sería otra forma de hacer esto, el controlador con
return false
, que deshabilitará el enlace, se agregará después de un clic.fuente
La forma mas facil
En tu html:
<a id="foo" disabled="true">xxxxx<a>
En tu js:
$('#foo').attr("disabled", false);
Si lo usas como atributo funciona perfectamente
fuente