Eu tenho uma tag <a href="#"> Previous </a> 1 2 3 4 <a href="#"> Next </a>
e, em algumas condições, quero que ela seja totalmente desativada.
Código de comentários (é assim que o link é gerado)
if (n_index != n_pages)
a = a+'<li><a href="#" onclick="javascript:paginateAjaxPage('+(n_index+1) +','+stype+');">></a></li><li><a href="#" onclick="javascript:paginateAjaxPage('+n_pages+','+stype+');" >>></a></li>';
else
a = a+'<li><a style="cursor: pointer;" onclick="return false;">></a></li><li><a style="cursor: pointer;" onclick="return false" >>></a></li>';
a = a+'</ul></div>';
javascript
html
Guerreiro
fonte
fonte
Respostas:
Experimente quando não quiser que o usuário redirecione ao clicar
fonte
<a href='javascript:;'>I am a shorter useless link</a>
?\t
, feeds de linha\n
e espaços apenas para ver o código dobrado e bonito (para quem? Navegador) e agora estão se preocupando com 7 bytesvoid(0)
e / ou a;
, oh deus.Millions millions of tabs\t, line feeds\n and spaces
sim, isso torna o código fácil de entender, enquantovoid(0)
não é. É por isso que deve ser removido ou deve ser o mais curto possível. Por exemplo, aqui mais curto - é para compreensão (leitura), não para "compressão" ou economia de bytes. :)você pode desativar todos os links em uma página com esta classe de estilo:
agora é claro que o truque é desativar os links somente quando você precisar, desta forma:
use uma classe A vazia, como esta:
então, quando você quiser desativar os links, faça o seguinte:
NOTA: Os nomes das regras CSS são transformados em minúsculas em alguns navegadores, e este código diferencia maiúsculas de minúsculas, então é melhor usar nomes de classes em minúsculas para isso
para reativar links:
verifique esta página http://caniuse.com/pointer-events para obter informações sobre compatibilidade do navegador
Acho que essa é a melhor maneira de fazer isso, mas infelizmente o IE, como sempre, não vai permitir :) Estou postando de qualquer maneira, porque acho que contém informações que podem ser úteis e porque alguns projetos usam um navegador conhecido , como quando você usa visualizações da web em dispositivos móveis.
se você quiser apenas desativar UM link (só percebo que é a pergunta), eu usaria uma função que define manualmente a url da página atual, ou não, com base nessa condição. (como a solução que você aceitou)
esta pergunta foi muito mais fácil do que eu pensava :)
fonte
pointer-events:none;
nunca conhecer essa tag, veio muito a calhar!Você pode simplesmente fornecer um hash vazio:
ou se isso não for bom o suficiente para "desativar", use um manipulador de eventos:
fonte
1
se for adicionado posteriormente.Tente isso usando jQuery:
fonte
fonte
Acho essa forma mais fácil de implementar. E tem a vantagem de você js. Não está dentro do seu html, mas em um arquivo diferente. Acho que sem desvincular. Ambos os eventos ainda estão ativos. Não tenho certeza. Mas de certa forma, você só precisa deste evento
fonte
unbind
necessário? Eu acreditoreturn false
oue.preventDefault()
seria suficiente.O MDN recomenda
element.removeAttribute(attrName);
definir o atributo como nulo (ou algum outro valor) quando você deseja desativá-lo. Neste caso seriaelement.removeAttribute("href");
https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute
fonte
A maneira mais fácil de desabilitar um link é simplesmente não mostrá-lo. Execute esta função sempre que quiser testar se sua condição é atendida para ocultar o botão Anterior (substitua
if (true)
pela sua condição):Em seguida, execute
testHideNav()
sempre que precisar verificar se sua condição mudou.fonte
Use um span e um onclick javascript. Alguns navegadores "saltam" se você tiver um link e "#" href.
fonte
javascript: void(0);
oujavascript:;
. Se você estiver renderizando a partir do Rails, apenas renderize uma extensão ao invés de onde você deseja desabilitar.Isso também é possível:
O link não vai a lugar nenhum por sua função será executada.
fonte
Eu tinha uma necessidade semelhante, mas minha motivação era evitar que o link fosse clicado duas vezes. Consegui usando jQuery:
O HTML se parece com isto:
fonte
Portanto, as soluções acima fazem com que o link não funcione, mas não torne visível (AFAICT) que o link não é mais válido. Eu tenho uma situação em que tenho uma série de páginas e desejo desabilitar (e deixar claro que está desabilitado) o link que aponta para a página atual.
Assim:
Isso percorre a lista de links, encontra aquele que aponta para a página atual (o n_root3 pode ser uma coisa local, mas imagino que
document
deve ter algo semelhante) e substitui o link pelo conteúdo do texto do link.HTH
fonte
Obrigado a todos ...
Meu problema foi resolvido pelo código abaixo:
fonte
Instale este plugin para jquery e use-o
http://plugins.jquery.com/project/jqueryenabledisable
Ele permite que você desabilite / habilite praticamente qualquer campo da página.
Se você quiser abrir uma página em alguma condição, escreva uma função java script e chame-a de href. Se a condição for satisfeita, você abre a página, caso contrário, não faça nada.
código é parecido com este:
Você também pode colocar o link em um div e definir a propriedade display do atributo Style como none. isso ocultará o div. Por exemplo,
Isso ocultará o link. Use um botão ou uma imagem para tornar este div visível agora, chamando esta função em onclick como:
Você também pode colocar uma tag de id na tag html, para que seja
E obtenha este id no seu javascript usando
Um desses deve funcionar com certeza haha
fonte
Outro método para desativar o link
a tag âncora sem href reagiria como texto simples / desabilitado
ao invés de
<a href="#"> with href </a>
veja jsFiddel
espero que isso seja importante.
fonte
Em vez de vazio, você também pode usar:
fonte
0) é melhor você lembrar que Alguns navegadores "pulam" se você tem um link e "#" href. Portanto, a melhor maneira seria um JavaScript personalizado
1) Se você prefere o JavaScript personalizado , aqui está:
2) Você pode evitar usar o seguinte
ou
Porque o pseudo-protocolo javascript pode colocar a página em um estado de espera em alguns navegadores, o que pode ter consequências inesperadas. O IE6 é conhecido por isso. Mas se você não se importa com o IE6 e está testando tudo, pode ser uma boa solução.
3) Se você já tem
jQuery
e estábootstrap
em seu projeto, pode pensar em usá-los da seguinte forma:Onde
.disabled
classe vem do bootstrap.Site de bootstrap do formulário Qupte ( aqui )
e
custom JavaScript
foi mostrado na seção 1fonte
Código abaixo para links desativados:
outra solução muito simples é:
A primeira solução é eficiente.
fonte