Eu tenho uma navegação mais ou menos padrão do bootstrap 3
<body data-spy="scroll" data-target=".navbar-collapse">
<!-- ---------- Navigation ---------- -->
<div class="navbar navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
</button>
<a class="navbar-brand" href="index.html"> <img src="#"></a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#home">Home</a></li>
<li><a href="#one">One</a></li>
<li><a href="#two">Two</a></li>
<li><a href="#three">Three</a></li>
<li><a href="#four">Four</a></li>
</ul>
</div>
</div>
</div>
Ele cai normalmente em dispositivos menores. Clicar no botão de menu expande o menu, mas se eu clicar (ou tocar nesse assunto) em um link de menu, o menu permanecerá aberto. O que tenho que fazer para fechá-lo novamente?
html
css
twitter-bootstrap
navigation
Paranóia
fonte
fonte
Respostas:
A configuração padrão do Bootstrap é manter o menu aberto quando você clica em um item de menu. Você pode substituir manualmente esse comportamento chamando
.collapse('hide');
o elemento jQuery que deseja recolher.fonte
Apenas para compartilhar isso das soluções no GitHub, esta foi a resposta popular:
https://github.com/twbs/bootstrap/issues/9013#issuecomment-39698247
Isso é conectado ao documento, para que você não precise fazê-lo em ready () (você pode anexar dinamicamente links ao menu e ele ainda funcionará), e só será chamado se o menu já estiver expandido. Algumas pessoas relataram piscadas estranhas onde o menu é aberto e depois são fechadas imediatamente com outro código que não verificava se o menu tinha a classe "in".
[ATUALIZAÇÃO 2014-11-04] aparentemente, ao usar submenus, os itens acima podem causar problemas; portanto, os itens acima foram modificados para:
fonte
collapse
é um método definido pelo bootstrap e anexado ao objeto jQuery ... presumivelmente, eles o reutilizam para vários propósitos (acordeão, barra de navegação etc.): getbootstrap.com/javascript / # collapse-useMude isso:
para isso:
Essa simples mudança funcionou para mim.
Ref: https://github.com/twbs/bootstrap/issues/9013
fonte
.in
ao final dodata-target
valor:data-target=".navbar-collapse.in"
. Do comentário nesta resposta: stackoverflow.com/a/21797534/89818Eu tive o mesmo problema, mas causado pela inclusão de duas vezes
bootstrap.js
ejquery.js
arquivos.Em um único clique, o evento foi processado duas vezes pelas duas instâncias de jquery. Um fechou e outro abriu a alavanca.
fonte
Isso ajudaria no manuseio suspenso na barra de navegação
fonte
Estou tendo / tive problemas semelhantes com o Bootstrap 4, alpha-6 e a resposta de Joakim Johansson acima me levou na direção certa. Não é necessário javascript. Colocar data-target = ". Navbar-collapse" e data-toggle = "collapse" na tag div dentro da nav, mas ao redor dos links / botões, funcionou para mim.
fonte
Eu sei que esta pergunta é para o Bootstrap 3, mas se você estiver procurando uma solução para o Bootstrap 4 , faça o seguinte:
fonte
$(".navbar-nav li a:not('.dropdown-toggle')") .on('click', function () { $('.navbar-collapse').collapse('hide'); }
Eu tive o mesmo problema, estava usando
jQuery-1.7.1
ebootstrap 3.2.0
. Alterei minha versão do jQuery para a versão mais recente (jquery-1.11.2
) e tudo funciona bem.fonte
eu fiz
fonte
Embora a solução publicada anteriormente para alterar o item de menu em si, como abaixo, funcione quando o menu está em um dispositivo pequeno, ela tem um efeito colateral quando o menu está em largura total e expandido, isso pode resultar em uma barra de rolagem horizontal deslizando sobre o seu itens de menu . As soluções javascript não têm esse efeito colateral.
(desculpe-me por responder assim, queria adicionar um comentário a essa resposta, mas parece que não tenho crédito suficiente para fazer comentários)
fonte
fonte
Caso você queira substituir manualmente esse comportamento chamando .collapse ('hide') dentro da diretiva de uma angular, eis o código:
arquivo javascript:
Html:
fonte
Verifique se você está usando a versão mais recente do bootstrap js. Eu estava enfrentando o mesmo problema e apenas atualizar o arquivo bootstrap.js do bootstrap-3.3.6 fez a mágica.
fonte
Se você deseja apenas alternar sua navegação quando usada em uma tela móvel, basta adicionar
data-toggle="collapse"
e adicionardata-target="#navbar"
elementos aos elementos a que funcionarão na tela móvel, mas lhe dará uma cintilação estranha quando clicada na tela da área de trabalho. As soluções jQuery não funcionam bem se você estiver em um ambiente Aurelia ou Angular.A melhor solução para mim foi criar um atributo personalizado que escute a consulta de mídia correspondente e adicione o
data-toggle="collapse"
atributo, se desejado:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
O atributo personalizado com Aurelia se parece com isso:
fonte
Descobri que, depois de muita luta, tentativa e erro, a melhor solução para mim no jsfiddle. Link para inspiração em jsfiddle.net . Estou usando o navbar navbar-nav-fix-top do bootstrap com alternância de recolhimento e hambúrguer. Aqui está a minha versão no jsfiddle: jsfiddle Scrollspy navbar . Eu estava obtendo apenas a funcionalidade básica usando as instruções em getbootsrap.com. Para mim, o problema estava principalmente nas direções vagas e js recomendadas pelo site getbootstrap. A melhor parte foi que a adição desse bit extra de js (que inclui parte do que é mencionado nos tópicos acima) resolveu vários problemas do Scrollspy para mim, incluindo:
NOTA: No código js mostrado abaixo (a partir do segundo link jsfiddle no meu post):
topMenu = $ ("# myScrollspy"),
... o valor "myScrollspy" deve corresponder ao id = "" no seu HTML da seguinte forma ...
Claro que você pode alterar esse valor para o valor que desejar.
fonte
Tudo que você precisa é data-target = ". Navbar-collapse" no botão, nada mais.
fonte
<a/>
mas não funciona<NavLink/>
, entra em colapso, mas,<NavLink/>
não está mais funcionando, nenhuma idéia do porquê?Este é o código que funcionou para mim:
fonte
Eu tive o mesmo problema, verifique se o bootstrap.js está incluído na sua página html. No meu caso, o menu foi aberto, mas não foi fechado. Assim que incluí o arquivo js do bootstrap, tudo funcionou.
fonte
Simples Tente criar uma função em javascript para a classe de recolhimento suspenso.
Exemplo:
JS :
Ligue esta função a
onClick
trabalhos simples para mim.fonte
Eu tive o problema semelhante, mas o meu não ficou aberto, ele foi aberto / fechado rapidamente, descobri que o jquery-1.11.1.min.js estava carregando antes do bootstrap.min.js. Então, eu invertei a ordem desses 2 arquivos e arrumei meu menu. Agora funciona perfeitamente. Espero que ajude
fonte
O problema pode ser que você está usando versões desatualizadas do bootstrap ou jquery, OU está chamando mais de uma versão na sua marcação.
Basta manter as versões mais recentes, você só precisa de uma referência. Resolve o problema.
fonte
convém garantir que você esteja carregando seu ATF jQuery e Bootstrap.min.js. Sua navegação é a primeira coisa a renderizar na página; portanto, se você tiver seus scripts na parte inferior do HTML, estará perdendo qualquer funcionalidade JavaScript.
fonte
Eu tive o mesmo problema apenas no celular, mas para um aplicativo Angular, e foi o que fiz:
app.component.html
app.component.ts
Espero que ajude :)
fonte
Meu menu não é padrão da barra de navegação, mas eu consegui recolher o meu automaticamente, usando a função "onclick" e a ".click ()".
fonte