Show/Hide (Abrir/Fechar) do JQuery para Menus

Junho 13, 2007 on 11:15 am | In Informatica, Trabalho, php, JavaScript, JQuery |

Vou screver esse tutorial com base no MORE Showing, MORE hiding, do site Learning JQuery, no qual é recomendadissimo a leitura para quem entende de inglês e quer aprender mais sobre Jquery, site cheio de dicas e tutoriais...

Se você está perdido aqui e nunca viu nada sobre Jquery, você pode começar com o tutorial original Traduzido.

Para os elementos do Abrir e Fechar do Menu vamos usar somente HTML e complementos de CSS para ficar 'bonito'.

HTML:
  1. <div class="try">
  2. <h3>Musicas</h3>
  3. <span class="interno">Offscpring </span>
  4.  
  5. <span class="interno">Insonic </span>
  6.  
  7. <span class="interno">Killer Buds </span>
  8.  
  9. <span class="interno">DJ SKILLO </span>
  10.  
  11. <span class="interno">DJ PASSA MAL </span>
  12.  
  13. <span class="interno">DJ silici0 </span></div>
  14. <h3>Videos</h3>
  15. <span class="interno">Malabares </span>
  16.  
  17. <span class="interno">Clips</span>
  18.  
  19. <span class="interno">Musica</span>
  20.  
  21. <span class="interno">Filmes</span></div>
  22. <h3>XXX</h3>
  23. <span class="interno">Blonde</span>
  24.  
  25. <span class="interno">Branca</span>
  26.  
  27. <span class="interno">Verde</span>
  28.  
  29. <span class="interno">Amarelo</span></div>
  30. </div>

Vamos ao CSS para melhorar o visual:

CSS:
  1. body {
  2. margin-left: 0px;
  3. margin-top: 0px;
  4. margin-right: 0px;
  5. margin-bottom: 0px;
  6. }
  7. .try{
  8. font-style:normal;
  9. font-family:Arial;
  10. font-size:14px;
  11. padding-left:20px;
  12. }
  13. .try h3 {
  14. margin: 0;
  15. padding: .25em;
  16. background: #99FFCC;
  17. border-top: 1px solid #999966;
  18. border-bottom: 1px solid #999966;
  19. }
  20. .interno{
  21. margin: 0;
  22. padding: .25em;
  23. padding-left:15px;
  24. }

Essa opção permite que cada sessão possa ser aberta e fechada independente de outras. Esse é o modo mais fácil de fazer o menu de árvore.

O método que iremos usar é .slidetoggle(), é um elemento que escorrega para baixo o menu quando for abrir e escorrega para cima quando for fechar.

Primeiramente vamos esconder todos itens do sub-menu e também vamos conectar cada click para cada h3.

JAVASCRIPT:
  1. $(document).ready(function() {
  2. $('div.try:eq(0)> div').hide();
  3. $('div.try:eq(0)> h3').click(function() {
  4.  
  5. });
  6. });

Usamos :eq() que é um seletor que passa por todos DIV e H3, dando HIDE e então criando opção do click.

Então colocaremos o método .slidetoggle() dentro do método click. Como sabemos que cada DIV que queremos mudar a opção para Mostrar/Esconder é a próxima tag de cada H3, podemos usar o metodo .next():

JAVASCRIPT:
  1. $(document).ready(function() {
  2. $('div.try:eq(0)> div').hide();
  3. $('div.try:eq(0)> h3').click(function() {
  4. $(this).next().slideToggle('fast');
  5. });
  6. });

Nesta ultima linha que adicionamos nos dizemos que para o H3 clicado nos referimos o metodo .slidetoggle() para a próxima TAG.

Supersimples não é mesmo? Você pode ver o código de outros modos nesse exemple que eu fiz: Exemplo. Dúvidas? Sugestões? So comentar... abraços


9 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Cara ficou legal essa parada heim... hehehe...

    Comment by Aguinelo Pedroso — Junho 13, 2007 #

  2. Poxa, da para fazer umas coisas muito legais com essa idéia básica... é a falta de tempo para melhorias do design e idéias.. :P

    Falta tempo até para arrumar a data aqui do comentário. hehehe

    Abraços

    Comment by silici0 — Junho 13, 2007 #

  3. e se além disso, eu quisesse fechar a div que estava aberta quando o usuario clicase em outra div.

    Exemplo:

    'Videos' jah aparece aberto.. ao clicar em Musicas, fecha 'Videos' e abre 'Musicas'.

    Como ficaria isso?
    se puder me ajudar.. muito obrigado.

    =)

    Comment by adcortes — Setembro 17, 2007 #

  4. Eu não entendi, visto que respondi o email, fico no aguardo de novidades.

    Abraços

    Comment by silici0 — Setembro 18, 2007 #

  5. Como ficaria para que no primeiro exemplo ali
    Ao invés de deixar um aberto de inicio, deixar todos fechados, como no segundo exemplo.

    Abraço.

    Comment by Carlo — Maio 6, 2008 #

  6. Eu não entendi !!!

    Comment by silici0 — Maio 6, 2008 #

  7. Troquei a ordem, desculpe.

    Veja o exemplo:
    http://rafaelcunha.com/testes/hideshow/hideshow.php

    No segundo exemplo ali.

    Já tem o menu: Músicas aberto
    Como que faz para deixar ele fechado de inicio e não aberto?

    Entende? Abraços.

    Comment by Carlo — Maio 6, 2008 #

  8. $('div.try:eq(0)> div').hide();

    Abraços

    Comment by silici0 — Maio 6, 2008 #

  9. [...] http://www.rafaelcunha.com/2007/06/13/showhide-abrirfechar-do-jquery-para-menus/ [...]

    Pingback by Jquery - Funções show() e hide() « Neyvo — Julho 11, 2008 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>


 

 Assine o feed