Jump to content
Fórum Script Brasil
  • 0

Menu Accordion com jQuery


Maycon P. Stanguine

Question

Olá a todos, bom dia!

Por favor, estou com problemas ao utilizar menu com jQuery, e agradeceria quem pudesse me ajudar.

Enfim, estou usando o "efeito" accordion para o menu de site (trabalho da faculdade).

Ele funciona perfeitamente.

Mas tem um porém, quando clico em um dos links do menu, ao carregar a página o menu recolhe e fica sempre no primeiro bloco de links.

Segue o código do menu:

HTML:

<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> 
 <head> 
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <link rel="stylesheet" type="text/css" href="css/layout.css">
  &lt;script type="text/javascript" src="js/jQuery.min.js"></script>
  &lt;script type="text/javascript" src="js/jMenu.js"></script> 
 </head> 
 <body>
  <div id="geral">
  <div id="cabecalho">
   <h1 align="center">Sistema</h1>
  </div> <!-- Fecha Cabeçalho -->
  <div id="barra-tarefas">
   Usuário Logado: <strong>[nome de usuário]</strong> -  <a href="login.html">Sair</a>
  </div> <!-- Fecha barra-tarefas -->
  <div id="lateral">
   <div class="accordian">
    <ul>
     <li>Inicio</li>
     <li>
      <a href="index.html"><div class="menu" style="background-color: #87CEEB;font-weight: bold;">Página Inicial</div></a>
     </li>
    <li>Livro</li>
    <li>
     <a href="pages/livro/cadastrar-livro.html"><div class="menu">Cadastrar Novo Livro</div></a>
     <a href="pages/livro/editar-livro.html"><div class="menu">Editar</div></a>
     <a href="pages/livro/listar-livro.html"><div class="menu">Listar</div></a>
    </li>
    <li>Usuário</li>
    <li>
     <a href="pages/usuario/cadastrar-usuario.html"><div class="menu">Cadastrar</div></a>
     <a href="pages/usuario/editar-usuario.html"><div class="menu">Editar</div></a>
     <a href="pages/usuario/listar-usuario.html"><div class="menu">Listar</div></a>
    </li>
    <li>Fornecedor</li>
    <li>
     <a href="pages/fornecedor/cadastrar-fornecedor.html"><div class="menu">Cadastrar</div></a>
     <a href="pages/fornecedor/editar-fornecedor.html"><div class="menu">Editar</div></a>
     <a href="pages/fornecedor/listar-fornecedor.html"><div class="menu">Listar</div></a>
    </li>
    <li>Funcionario</li>
    <li>
     <a href="pages/funcionario/cadastrar-funcionario.html"><div class="menu">Cadastrar</div></a>
     <a href="pages/funcionario/editar-funcionario.html"><div class="menu">Editar</div></a>
     <a href="pages/funcionario/listar-funcionario.html"><div class="menu">Listar</div></a>
    </li>
   </ul>
   </div> <!-- Fecha div accordian -->
   </div> <!-- Fecha div lateral -->
   <div id="conteudo">
    <h1 align="center">Bem-Vindo</h1><br />
    <p align="center">Utilize o MENU ao lado para navegar pelo sistema.</p>
   </div><!-- Fecha div conteudo -->
   <div style="clear: both;"></div> <!-- Usado para alinhar as div's corretamente -->
   <div id="rodape">
    <h4 align="center">© 2012 - Grupo</h4>
   </div><!-- Fecha div rodape -->
  </div><!-- Fecha div geral -->
 </body> 
</html>
jQuery:
$(document).ready(function() {
//Hide all the content except the first
$('.accordian li:odd:gt(0)').hide();

// Add the dimension class to all the content
$('.accordian li:odd').addClass('dimension');

// Set the even links with an 'even' class
$('.accordian li:even:even').addClass('even');

// Set the odd links with a 'odd' class
$('.accordian li:even:odd').addClass('odd');

// Show the correct cursor for the links
$('.accordian li:even').css('cursor', 'pointer');

// Handle the click event
$('.accordian li:even').click( function() {

// Get the content that needs to be shown
var cur = $(this).next();

// Get the content that needs to be hidden
var old = $('.accordian li:odd:visible');

// Make sure the content that needs to be shown 
// isn't already visible
if ( cur.is(':visible') )
return false;

// Hide the old content
old.slideToggle(300);

// Show the new content
cur.stop().slideToggle(300);
});

Sei que nessa linha $('.accordian li:odd:gt(0)').hide(); é onde ocorre esse "problema" de sempre mostrar o primeiro bloco de links.

O que tentei fazer, alterei $('.accordian li:odd:gt(0)').hide(); para $('.accordian li:odd:gt(1)').hide();

Até funciona, quando a página carrega, abre o segundo bloco primeiro, mas o primeiro também fica aberto.

Se fizer com o terceiro, a mesma coisa, a página carrega com o terceiro bloco aberto, e os demais antes dele também. =(

Tentei fazer com que todos os blocos iniciassem fechados, mas ai num funcionou o script. =S

Não tenho muita experiencia com jQuery, mas só falta isso para terminar meu trabalho e eu já não sei mais o que fazer.

Agradeço a quem puder ajudar. =)

Edited by Maycon P. Stanguine
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...