Ir para conteúdo
Fórum Script Brasil
  • 0

Menu Accordion com jQuery


Maycon P. Stanguine

Pergunta

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. =)

Editado por Maycon P. Stanguine
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...