Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Lista desplegable...

Estas en el tema de Lista desplegable... en el foro de Frameworks JS en Foros del Web. Hola buenas, tengo el siguiente problema.... tengo esta lista Código: <ul id="menu"> <li><a>One</a></li> <li><a>Two</a> <ul> <li><a>Two 1</a></li> <li><a>Two 2</a></li> </ul> </li> <li><a>Three</a></li> <li><a>Four</a> <ul> <li><a>Four ...
  #1 (permalink)  
Antiguo 16/07/2011, 11:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 256
Antigüedad: 9 años, 5 meses
Puntos: 5
Lista desplegable...

Hola buenas, tengo el siguiente problema....

tengo esta lista
Código:
  
<ul id="menu">
    <li><a>One</a></li>
    <li><a>Two</a>
      <ul>
        <li><a>Two 1</a></li>
        <li><a>Two 2</a></li>
      </ul>
    </li>
    <li><a>Three</a></li>
    <li><a>Four</a>
      <ul>
        <li><a>Four 1</a></li>
        <li><a>Four 2</a></li>
      </ul>
    </li>
  </ul>
pues bien con jquery , me gustaria poder agregar a todos los li , q tengan hijos un span con + y -, segun este o no desplegado , despues de sus etiquetas a, para poder hacerlo extendible , el resultado deberia ser.

Código:
<ul id="menu">
    <li><a>One</a></li>
    <li><a>Two</a><span>[+]</spa>
      <ul>
        <li><a>Two 1</a></li>
        <li><a>Two 2</a></li>
      </ul>
    </li>
    <li><a>Three</a></li>
    <li><a>Four</a><span>[+]</spa>
      <ul>
        <li><a>Four 1</a></li>
        <li><a>Four 2</a></li>
      </ul>
    </li>
  </ul>
Como puedo acceder y agregar un span con jquery a los padres de la lista....
Muchas gracias....
Un saludo
  #2 (permalink)  
Antiguo 17/07/2011, 12:10
Avatar de Naahuel  
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 9 años, 7 meses
Puntos: 192
Respuesta: Lista desplegable...

Esto funciona:

Código HTML:
Ver original
  1.   $(function(){
  2.     //seleccionar li's que contienen ul's y aplicarles el span
  3.     var items_con_menu = $('#menu > li:has(ul)');
  4.     items_con_menu
  5.       .children('a').append('<span class=\"masmenos\">+</span>')
  6.       .click(function(e){
  7.         e.preventDefault();//evitar click
  8.         var elem = $(this).next('ul');//obtener submenu a desplegar
  9.         $('#menu ul:visible').not(elem).slideUp().parent().find('.masmenos').html('+');//plegar otros submenus visibles y cambiar - a +
  10.         elem.slideDown().parent().find('.masmenos').html('-');//desplegar menu actual y cambiar + por -
  11.       });
  12.   });  
  13.  
  14.   <style>
  15.     #menu ul{
  16.       display:none;
  17.     }
  18.   </style>

Aunque tal vez sea necesario una optimización del código. Me parece que da muchas vueltas, lo hice rápido.
__________________
nahueljose.com.ar

Etiquetas: javascript, jquery, lista
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




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