Alguém sabe como desativar um link no jquery SEM usar return false;
?
Especificamente, o que estou tentando fazer é desativar o link de um item, executando um clique nele usando o jquery, que aciona algumas coisas, e reativando esse link para que, se ele for clicado novamente, funcione como padrão.
Obrigado. Dave
ATUALIZAÇÃO
Aqui está o código. O que é necessário fazer após a aplicação da .expanded
classe é reativar o link desativado.
$('ul li').click(function(e) {
e.preventDefault();
$('ul').addClass('expanded');
$('ul.expanded').fadeIn(300);
//return false;
});
Respostas:
Isso impedirá o comportamento padrão de um hiperlink, que é visitar o href especificado.
No tutorial do jQuery :
Se você desejar
preventDefault()
apenas se uma determinada condição for atendida (algo está oculto, por exemplo), você poderá testar a visibilidade da sua ul com a classe expandida . Se estiver visível (ou seja, não oculto), o link deverá disparar normalmente, pois a instrução if não será inserida e, portanto, o comportamento padrão não será impedido:fonte
Tente o seguinte:
EDITAR-
No seu código atualizado:
fonte
href="#"
Para outros que vieram aqui pelo google como eu - aqui está outra abordagem:
Lembre-se: não é apenas uma classe css
mas também esses dois
para que você possa adicionar e remover facilmente outras classes com o jQuery. Não há necessidade de tocar href ...
Eu amo jQuery! ;-)
fonte
on()
para filtrar todos osa.disabled
links e impedir o padrão. Tudo o que você precisa fazer é ativar / desativar a classe desativada e o link se autodefinirá quando "ativado".if(disabledCondition)
== true
. :)if ($(this).hasClass('disabled')) { e.preventDefault(); }
?Aqui está uma solução alternativa de css / jQuery que eu prefiro por sua dispersão e scripts minimizados:
css:
jQuery:
fonte
.prop("tabindex", "-1");
após oaddClass
Você pode remover o clique do link seguindo;
Você pode reativar o link seguindo:
Você não pode usar a propriedade 'desativada' para links.
fonte
Se você seguir a rota href, poderá salvá-la
Desabilitar:
Em seguida, reative usando:
Em um caso, eu tive que fazer dessa maneira, porque os eventos de clique já estavam vinculados a outro lugar e eu não tinha controle sobre ele.
fonte
Eu sempre uso isso no jQuery para desativar links
fonte
$("form a").attr("disabled", false);
paraExemplo de link html:
use isso no jQuery
adicione isso ao css:
fonte
pointer-events: none
propriedade dos elementos âncora, eles voltam a fazer o que fizeram anteriormente quando clicados. Portanto, se fossem hiperlinks básicos, eles reverterão para a navegação no URL em seuhref
atributo e, se tiverem um manipulador de eventos de clique definido, ele se tornará ativo novamente. Muito mais simples do que salvarhref
valores e manipular cliques.Meu favorito no "checkout para editar um item e impedir que o oeste selvagem faça cliques em qualquer lugar - enquanto estiver no checkout"
Portanto, se eu quiser que todos os links externos em uma segunda barra de ferramentas de ação sejam desativados enquanto estiver no "modo de edição", conforme descrito acima, adicionarei a função de edição
Exemplo de link após incêndio:
E agora você PODE usar a propriedade desativada para links
Felicidades!
fonte
Você deve encontrar sua resposta aqui .
Obrigado @Will e @Matt por esta solução elegante.
fonte
você pode apenas ocultar e mostrar o link como quiser
fonte
Basta acionar coisas, definir alguma bandeira, retornar falso. Se o sinalizador estiver definido - não faça nada.
fonte
unbind()
foi descontinuadojQuery 3
, use ooff()
método:fonte
Eu sei que isso não é com jQuery, mas você pode desativar um link com alguns css simples:
o HTML ficaria assim
fonte
Isso funciona para links que possuem o atributo onclick definido inline. Isso também permite remover posteriormente o "retorno falso" para habilitá-lo.
fonte
Apenas use
$("a").prop("disabled", true);
. Isso realmente desativará o elemento de link. Precisa serprop("disabled", true)
. Não useattr("disabled", true)
fonte