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

aplicar un expand all a mis links de archivos en mi blog

Estas en el tema de aplicar un expand all a mis links de archivos en mi blog en el foro de Frameworks JS en Foros del Web. Hola. Ciertamente tengo pocos conocimientos de javascript y jquery, así que les pido su ayuda en lo siguiente por favor: Quiero que la sección de ...
  #1 (permalink)  
Antiguo 20/07/2011, 17:01
Avatar de Hildergarn  
Fecha de Ingreso: agosto-2004
Ubicación: Panamá
Mensajes: 442
Antigüedad: 19 años, 8 meses
Puntos: 4
Exclamación aplicar un expand all a mis links de archivos en mi blog

Hola. Ciertamente tengo pocos conocimientos de javascript y jquery, así que les pido su ayuda en lo siguiente por favor:

Quiero que la sección de archivos en mi website de viajes (hospedado en blogger)

http://www.viajesycosasasi.com/p/archivos.html

cuente con la opción de expandir/colapsar los enlaces de post tal como aparece en este site

http://www.wanderingearl.com/archives/

Intenté tratando de poner el código jquery como aparece en dicho site, hice varias pruebas pequeñas, pero nada que me funciona.

Les agradezco cualquier comentario o ayuda.

saludos
  #2 (permalink)  
Antiguo 20/07/2011, 17:30
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 11 meses
Puntos: 63
Respuesta: aplicar un expand all a mis links de archivos en mi blog

Hola Hildergarn, hace poco estuve trabajando en un menú acordeón, lo principal es tener una estructura de lista (como en casi cualquier menú):

Código HTML:
<ul class="acordeon" id="config">
        <li><h3 onselectstart='return false'>Ultimos usuarios</h3>
            <div>En costrucción...</div>
        </li>
        <li><h3 onselectstart='return false'>Ultimos Articulos</h3>
            <div>En costrucción...</div>
        </li>
        <li><h3 onselectstart='return false'>Ultimos widgets</h3>
            <div>En costrucción...</div>
        </li>
    </ul> 
El siguiente paso es ocultar mediante CSS los div que se encuentren dentro del menú:

Código CSS:
Ver original
  1. ul.acordeon {
  2.     list-style: none;
  3.     padding: 0;
  4. }
  5.  
  6. ul.acordeon * {
  7.     padding: 0;
  8.     margin: 0;
  9. }
  10.  
  11. ul.acordeon li h3 {
  12.     background: url(../arrow_left.gif) no-repeat center right;
  13.     color: #555;
  14.     font-size: 12px;
  15.     padding: 5px;
  16.     cursor: pointer;
  17. }
  18.  
  19. ul.acordeon li:hover {
  20.     background: url(../bg_acordeon_over.gif);
  21. }
  22.  
  23. ul.acordeon li {
  24.     border: solid 1px #9ac1c9;
  25.     background: url(../bg_acordeon.gif);
  26.     padding:0;
  27.     margin: 5px;
  28. }
  29.  
  30. ul.acordeon div {
  31.     display: none; //acá oculto el div
  32.     background: #FFF;
  33.     padding: 10px;
  34.     border-top: solid 1px #9ac1c9;
  35. }

El resto de CSS es solo para obtener el resultado visual que necesitaba. A continuación utilizo javascript para dejar visibles los divs:

Código Javascript:
Ver original
  1. function myo() {//document.getElementById().style
  2.     var pa = this.parentNode;
  3.     /*var ocu = pa.parentNode.getElementsByTagName("div");
  4.     for(var i=0; i<ocu.length; i++) {
  5.         if(ocu.item(i) != pa.getElementsByTagName("div").item(0)) {
  6.             ocu.item(i).style.display = "none";
  7.             ocu.item(i).parentNode.getElementsByTagName("h3").item(0).style.background = "url(images/arrow_left.gif) no-repeat center right";
  8.         }
  9.     }*/
  10.     if(pa.getElementsByTagName("div").item(0).style.display == "block") {
  11.         pa.getElementsByTagName("div").item(0).style.display = "none";
  12.         this.style.background = "url(images/arrow_left.gif) no-repeat center right";//esto lo utilizo para cambiar una flecha hacia abajo por una hacia un lado
  13.     } else {
  14.         pa.getElementsByTagName("div").item(0).style.display = "block";
  15.         this.style.background = "url(images/arrow_down.gif) no-repeat center right";//esto lo utilizo para cambiar una flecha hacia un lado por una hacia abajo
  16.     }
  17. }

El código que aparece comentado lo utilizo para que solo se muestre un solo div, de esta manera si doy click en otro head se oculta el div que se este visualizando y se muestra el nuevo. Por ultimo asigno la funcionalidad de mostrar divs a todos los h3 del menú:

Código Javascript:
Ver original
  1. var ac = getElementsByClassName("acordeon");
  2.     for(var i=0; i<ac.length; i++) {
  3.         var head = ac[i].getElementsByTagName("h3");
  4.         for(var j=0; j<head.length; j++) {
  5.             Event.add(head[j],"click",myo);
  6.         }
  7.     }

Resultado:




Conclusión:

Los pasos realmente importantes para crear el menú son:

1. Tener una estructura sobre la cual trabajar, las listas representan una buena opción.
2. Ocultar mediante CSS la parte colapsable del menú (en mi caso los divs)
3. mostrar y ocultar mediante javascript la parte colapsable del menú

Te puedo ayudar con un ejemplo más sencillo si así lo deseas.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #3 (permalink)  
Antiguo 23/07/2011, 13:00
Avatar de Hildergarn  
Fecha de Ingreso: agosto-2004
Ubicación: Panamá
Mensajes: 442
Antigüedad: 19 años, 8 meses
Puntos: 4
Respuesta: aplicar un expand all a mis links de archivos en mi blog

Se ve bueno el código, aunque voy a probarlo primero en localhost a ver si puede funcionar en mi blog. Trataré de mantener el resultado simple, sin imágenes de fondo ni nada llamativo, sólo que despliegue los links tal cual como los tengo en mi página.

Si tienes el resultado que pusistes online, para yo verlo, sería buenísimo :)

Gracias por la ayuda.
__________________
Visita Viajés y Cosas Así
  #4 (permalink)  
Antiguo 23/07/2011, 14:10
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 11 meses
Puntos: 63
Respuesta: aplicar un expand all a mis links de archivos en mi blog

Como te lo menciones ese es un proyecto que estoy trabajando y aun se encuentra en localhost, aunque he subido un demo a http://mirdware.co.cc/, espero que te sea de ayuda.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #5 (permalink)  
Antiguo 24/07/2011, 15:53
Avatar de Hildergarn  
Fecha de Ingreso: agosto-2004
Ubicación: Panamá
Mensajes: 442
Antigüedad: 19 años, 8 meses
Puntos: 4
Exclamación Respuesta: aplicar un expand all a mis links de archivos en mi blog

Que tal. Te comento que, después de varios testeos en localhost, pude subir la lista a mi site, pero con un gran inconveniente, el cual explicaré a ver si me ayudan:

si visitan la sección de archivos de mi website pude colocar los links a modo de "acordeón". Únicamente funcionan si clickean sobre Expandir/Cerrar, porque si lo hacen sobre los meses no funciona, cosa que no debería suceder porque lo probé en localhost y me funciona de maravilla.

Les dejo los siguientes código para que sepan como está todo estructurado:

Un mes en esa página está programado de la siguiente forma

Código HTML:
Ver original
  1. <li><span class="yearmes">Julio 2011</span>
  2. <ul class="lista_archivos">
  3. <li><a href="http://www.viajesycosasasi.com/2011/07/el-puente-reina-juliana-curacao.html">El puente Reina Juliana, Curaçao</a></li>
  4. <li><a href="http://www.viajesycosasasi.com/2011/07/los-pros-y-contras-de-un-viaje-de-larga.html">Los pros y contras de un viaje de larga duración</a></li>
  5. <li><a href="http://www.viajesycosasasi.com/2011/07/viajar-igual-que-los-demas-es-lo-ideal.html">Viajar igual que los demás, ¿es lo ideal?</a></li>
  6. <li><a href="http://www.viajesycosasasi.com/2011/07/de-vuelta.html">De vuelta</a></li>
  7. </ul>
  8. </li>

El código javascript que tengo para que aparezcan los enlaces es este

Código Javascript:
Ver original
  1. <script type='text/javascript'>
  2.         /* <![CDATA[ */
  3.             jQuery(document).ready(function() {
  4.                 jQuery('.colapsar').find('.lista_archivos').hide();
  5.                 jQuery('.colapsar').find('.lista_archivos:first').hide();
  6.                 jQuery('.colapsar').find('.yearmes').click(function() {
  7.                     jQuery(this).next('ul').slideToggle('fast');
  8.                 });
  9.                 jQuery('.colapsar').find('.linkmadre').click(function() {
  10.                     if ( 'Expandir' == jQuery(this).text() ) {
  11.                         jQuery(this).parent('.contenedor').find('.lista_archivos').show();
  12.                         jQuery(this).text('Cerrar');
  13.                     }
  14.                     else {
  15.                         jQuery(this).parent('.contenedor').find('.lista_archivos').hide();
  16.                         jQuery(this).text('Expandir');
  17.                     }
  18.                     return false;
  19.                 });
  20.             });
  21.         /* ]]> */
  22.     </script>

este es el llamado al archivo jquery:

Código Javascript:
Ver original
  1. <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js' type='text/javascript'/>

No se en verdad que puede ser. Como dije, en localhost todo me funciona bien, pero online no. Cualquier ayuda se las agradezco.

Saludos

Etiquetas: blog, javascript, jquery
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 20:12.