Foros del Web » Programando para Internet » Jquery »

Problemas con menu - jQuery

Estas en el tema de Problemas con menu - jQuery en el foro de Jquery en Foros del Web. Hola buenos días, este es mi primer post en este foro, y ya que por mas que busque no encuentro la solución.. a ver si ...
  #1 (permalink)  
Antiguo 24/03/2011, 04:24
 
Fecha de Ingreso: marzo-2011
Ubicación: Mallorca
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
Problemas con menu - jQuery

Hola buenos días, este es mi primer post en este foro, y ya que por mas que busque no encuentro la solución.. a ver si vosotros me podéis ayudar.

Pues a ver, tengo el típico menú formado por <ul><li><ul><li>, pues todo bien hasta que me pongo con jQuery, que quiero darle efectos slideDown y slideUp para visualizar los submenús (abajo esta el código). El problema viene cuando hago click en un submenú (por ejemplo en HTML, CSS, Mallorca...etc) el cual me hacen un slideUp en el momento que yo no quiero...

El tema es que quiero hacer el efecto justo cuando se haga click encima del titulo de cada sección (INICIO, CATEGORIAS, USUARIO...). No se si me habréis entendido porque se que me explico bastante mal, pero yo lo intento.. jeje

Os dejo el código del menú y del jQuery que he hecho.

Código HTML:
 <ul class="UlMenu">
            <li style="list-style: url(style/img/home.png);">INICIO
                <ul>                   
                    <li>Quien soy?</li>
                    <li>Mallorca</li>
                </ul>
            </li>            
            <li style="list-style: url(style/img/cat.png);">CATEGORIAS
                <ul>                   
                    <li>HTML</li>
                    <li>CSS</li>
                    <li>jQuery</li>
                    <li>PHP</li>
                </ul>
            </li>
            <li style="list-style: url(style/img/user.png);">USUARIO
                <ul>    
                    <form method="post" id="login" name="login" id="FrLogin">
                        <label>Nombre</label><input type="text" tabindex="0" name="nombre">
                        <label>Contrasenya</label><input type="text" tabindex="1" name="pass" />
                        <button type="submit" tabindex="2" name="submit" onclick="php/login.php">Entrar</button>
                    </form>
                </ul>            
            </li>            
        </ul> 

Código:
$(document).ready(function(){
    
    
    $(".UlMenu li:has(ul)").click(function(e){
        if ($(this).find('ul').css('display') == 'none'){
            $(this).find('ul').slideDown(500);
        } else {
            $(this).find('ul').slideUp(500);
        }
    });

})

Última edición por tonyweb; 24/03/2011 a las 04:30
  #2 (permalink)  
Antiguo 24/03/2011, 12:44
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 9 meses
Puntos: 192
Respuesta: Problemas con menu - jQuery

Eso es porque si tenés una estructura así:

Código HTML:
Ver original
  1. <ul>
  2.     <li ="opcion-principal">
  3.         Opcion Principal
  4.         <ul id="submenu">
  5.             <li>Opcion Opcion</li>
  6.             <li>Opcion Opcion</li>
  7.             <li>Opcion Opcion</li>
  8.         </ul>
  9.     </li>
  10. </ul>


Cuando hacés click en alguna "Opcion Opcion", técnicamente también estás haciendo click en "Opcion principal" pues este contiene a todas las "Opciones Opciones" dentro. ¿Comprende?

Lo que yo haría es utilizar <a> para envolver las opciones (además de que ayuda a simplificar una solución para tu problema, creo que también ayuda a la usabilidad de tu sitio). Entonces el HTML se vería así:
Código HTML:
Ver original
  1. <ul class="UlMenu">
  2. <li style="list-style: url(style/img/home.png);">
  3.     <a href="#">INICIO</a>
  4.     <ul>                  
  5.         <li>Quien soy?</li>
  6.         <li>Mallorca</li>
  7.     </ul>
  8. </li>            
  9. <li style="list-style: url(style/img/cat.png);">
  10.     <a href="#">CATEGORIAS</a>
  11.     <ul>                  
  12.         <li><a href="http://www.google.com">HTML</a></li>
  13.         <li>CSS</li>
  14.         <li>jQuery</li>
  15.         <li>PHP</li>
  16.     </ul>
  17. </li>
  18. <li style="list-style: url(style/img/user.png);">
  19.     <a href="#">USUARIO</a>
  20.     <ul>    
  21.         <form method="post" id="login" name="login" id="FrLogin">
  22.             <label>Nombre</label><input type="text" tabindex="0" name="nombre">
  23.             <label>Contrasenya</label><input type="text" tabindex="1" name="pass" />
  24.             <button type="submit" tabindex="2" name="submit" onclick="php/login.php">Entrar</button>
  25.         </form>
  26.     </ul>            
  27. </li>            
  28. </ul>

Y tu jQuery, muy simplificado:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.      $(".UlMenu > li > a").click(function(e){
  3.         e.preventDefault();
  4.         $(this).siblings('ul').slideToggle(500);
  5.     });
  6. });

El método preventDefault() permite que al hacer click en los <a> de las categorías, estos no actúen como enlaces corrientes. Notá que estoy usando el selector ".UlMenu > li > a" de forma de que el script no aftecte los <a> dentro de los submenus.

Espero te sirva, un saludo.
  #3 (permalink)  
Antiguo 24/03/2011, 13:17
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 10 meses
Puntos: 772
Hola, tonyweb

Muevo tu tema al foro de Frameworks y Plugins Javascript desde Javascript.

Saludos,
  #4 (permalink)  
Antiguo 24/03/2011, 19:04
 
Fecha de Ingreso: marzo-2011
Ubicación: Mallorca
Mensajes: 3
Antigüedad: 13 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Problemas con menu - jQuery

Naahuel muchas gracias, lo he solucionado.
He estado mirando lo que hace siblings y slideToggle y la verdad que no sabia de ellas aun... Hará 2 semanitas que empece con jquery y estoy lo que se dice verde

Mirando el lado positivo me voi a dormir con buen sabor de boca. Gracias.
  #5 (permalink)  
Antiguo 24/06/2011, 17:49
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Problemas con menu - jQuery

cuando deseas un menu en flash avisame ami correo [email protected]

Etiquetas: javascript
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:50.