Foros del Web » Programando para Internet » Jquery »

Lio con el "Leer más"

Estas en el tema de Lio con el "Leer más" en el foro de Jquery en Foros del Web. Hola estoy diseñando una web y tengo un lio bastante bueno. Tengo una seccion que es staff: http://bi.loslocostambientienenblog.com/staff.html Lo que quiero es que se muestre ...
  #1 (permalink)  
Antiguo 15/01/2013, 07:55
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Lio con el "Leer más"

Hola estoy diseñando una web y tengo un lio bastante bueno.

Tengo una seccion que es staff:
http://bi.loslocostambientienenblog.com/staff.html

Lo que quiero es que se muestre al pulsar en leer más el resto de la info del usuario, probandolo en un solo usuario funcionaba de lujo, el conflicto es el tener mas de uno, probarlo y vereis que se vueve loco.

este es el javascript:
Código Javascript:
Ver original
  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
  2. <script type="text/javascript">
  3. function toggleAndChangeText() {
  4.      $('#leer-mas').toggle();
  5.      if ($('#leer-mas').css('display') == 'none') {
  6.           $('#aTag').html('Leer más &#9660');
  7.      }
  8.      else {
  9.           $('#aTag').html('Leer menos &#9650');
  10.      }
  11. }
  12. </script>
  13. <script type="text/javascript">
  14. function toggleAndChangeText() {
  15.      $('#leer-mas2').toggle();
  16.      if ($('#leer-mas2').css('display') == 'none') {
  17.           $('#aTag').html('Leer más &#9660');
  18.      }
  19.      else {
  20.           $('#aTag').html('Leer menos &#9650');
  21.      }
  22. }
  23. </script>

Como veis lo he duplicado a ver si asi funciona, pero nada no funciona.

¿existe algun metodo con jQuery que haga esto y no cause conflictos?
¿Cual es la solución?

Saludos
  #2 (permalink)  
Antiguo 15/01/2013, 09:15
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Lio con el "Leer más"

Bueno al final lo he solucionado con otro script de jQuery, concretamente uno ligero llamado jQuery-Collapse

Me ha costado configurarlo pero al final funciona, os voy a poner el codigo de ejemplo que he utilizado para hacerlo:

Código HTML:
Ver original
  1. <div id="caja">
  2.         <span class="album1">      
  3.         <img src="img/staff/mindpanic.jpg" class="imagen_album_artista_staff">
  4.         <h1 class="titulo_album">[MindPaniC] Javier Del Pozo</h1>
  5.         Multidisciplinar, inquieto, creador y diseñador de Bipolar Station. De adolescente traficaba con cintas de casete en el instituto, poco después empezó a crear su propia música con un viejo PC, siempre en contacto con la escena musical actual.
  6.     <div id="custom-show-hide-example">
  7.         <h3><a href="#">Leer más </a></h3>
  8.         <div>
  9.         </p>Aficionado a la fotografía, su cámara le acompaña a todas partes. Interesado también por la fotografía analógica, utiliza sus dos cámaras réflex antiguas que compro de segunda mano en Ebay a un buen precio.</p>
  10.         <p>En cuanto a música se refiere escucha diferentes géneros, pero la música electrónica en sus diferentes vertientes son su lado más llamativo. Actualmente muy influenciado por la escena ambient y experimental.</p>
  11.         <p>Fotográficamente de estilo aun no concreto, pero con buen gusto y amplio conocimiento de las técnicas y cachivaches fotográficos.</p>
  12.         Le podrás encontrar en:
  13.         <ul class="lista-normal">
  14.             <li><a href="http://www.flickr.com/photos/javier-del-pozo/">Flickr</a></li>
  15.             <li><a href="http://500px.com/phileras">500px</a></li>
  16.             <li><a href="http://www.mixcloud.com/javier-del-pozo-fernandez/">Mixcloud</a></li>
  17.         </ul>
  18.         </div>
  19.     </div>
  20.     <script>
  21.         new jQueryCollapse($("#custom-show-hide-example"), {
  22.           open: function() {
  23.             this.slideDown(300);
  24.           },
  25.           close: function() {
  26.             this.slideUp(300);
  27.           }
  28.         });
  29.     </script>
  30.         </span>
  31.         <span class="album2">  
  32.         <img src="img/staff/sideral.jpg" class="imagen_album_artista_staff">
  33.         <h1 class="titulo_album">[Sideral] Raúl Villalón</h1>
  34.         La mayor parte del tiempo lo dedico a la fotografía y time lapse, sin embargo, desde adolescente, escucho, y en ocasiones produzco música.
  35.     <div id="custom-show-hide-example1">   
  36.         <h3><a href="#">Leer más </a></h3>
  37.         <div>
  38.         <p>Mis influencias son amplias y abundantes, a nivel visual mencionaría la película Taxi Driver y fotógrafos contemporáneos como Nicolas Bouvier o James Yeung.</p>
  39.         <p>A nivel musical, son muchos los que han dejado un intenso poso como Orbital, Ladytron, Paul Kalkbrenner, Pan Sonic, Richie Hawtin...</p>
  40.         <p>Actualmente estoy involucrado en varios proyectos, la mayoría relacionados con la fotografía o video, siendo el último la creación de un pack de loops para VJ´s y una aplicación para dispositivos móviles, PictureSight, en la que se muestra el trabajo de fotógrafos consolidados.</p>
  41.         <p>Disfruta, y bienvenido a mi viaje!</p>
  42.         Me podrás encontrar en:
  43.         <ul class="lista-normal">
  44.             <li><a href="http://www.flickr.com/photos/raulvillalon/" alt="Raúl Villalón en Flickr">Flickr</a></li>
  45.             <li><a href="http://www.pond5.com/artist/Sideral" alt="Raúl Villalón en Pond5">Pond5</a></li>
  46.             <li><a href="https://vimeo.com/raulvillalon" alt="Raúl Villalón en Vimeo">Vimeo</a></li>
  47.         </ul>  
  48.         </div>
  49.     </div>
  50.         <script>
  51.         new jQueryCollapse($("#custom-show-hide-example1"), {
  52.           open: function() {
  53.             this.slideDown(300);
  54.           },
  55.           close: function() {
  56.             this.slideUp(300);
  57.           }
  58.         });
  59.         </script>
  60.         </span>
  61.         <span class="licencia">¿Quieres formar parte de nuestro equipo? <strong><a href="contacto.html">contacta con nosotros</a></strong></span>
  62.         </div> 
  63.         <div class="img_inferior">
  64.             <div class="copyright">
  65.             Copyright &copy; 2013 <a href="http://bipolarstation.com" class="copyr">Bipolar Station</a>
  66.             </div>
  67.         </div>
  68.     </div>

Como veis la unica solución es ir añadiendo el script con el nombre cambiado, al menos es la unica manera que he encontrado yo, si sabeis de otra que sea mas facil pues chivatazo al canto amigos.

Saludos a todos
  #3 (permalink)  
Antiguo 15/01/2013, 09:20
 
Fecha de Ingreso: julio-2008
Mensajes: 91
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: Lio con el "Leer más"

Hola.

Puede ser, pero puedes hacerlo optimizando código.

Para comenzar lo ideal es que la estructura de tu HTML sea correcta, por ejemplo no puede haber elementos con el atributo ID iguales. En ese caso es mejor usar el atributo CLASS.

Antes agregue una regla al css, igual que la regla #leer_mas, pero esta vez como class:

Código CSS:
Ver original
  1. #leer-mas {
  2.     display:none;
  3. }
  4. .leer-mas {
  5.     display:none;
  6. }

En algunos elementos cambiar el atributo ID por class:
id="aTag" ==> class="aTag", más adelante veras porque.
id="leer-mas" ==> class="leer-mas"
Quite la función del atributo href javascript:toggleAndChangeText(); ==> javascript:;
Para que quede de la siguiente manera:
Código HTML:
Ver original
  1. <div id="caja">
  2.         <span class="album1">      
  3.         <img src="mindpanic.jpg" class="imagen_album_artista_staff">
  4.         <h1 class="titulo_album">[MindPaniC] Javier Del Pozo</h1>
  5.         <p>Multidisciplinar, inquieto, creador y diseñador de Bipolar Station. De adolescente traficaba con cintas de casete en el instituto, poco después empezó a crear su propia música con un viejo PC, siempre en contacto con la escena musical actual. Aficionado a la fotografía, su cámara le acompaña a todas partes. <a class="aTag" href="javascript:;">Leer más </a></p>
  6.         <div class="leer-mas"><p>Interesado también por la fotografía analógica, utiliza sus dos cámaras réflex antiguas que compro de segunda mano en Ebay a un buen precio.</p>
  7.         <p>En cuanto a música se refiere escucha diferentes géneros, pero la música electrónica en sus diferentes vertientes son su lado más llamativo. Actualmente muy influenciado por la escena ambient y experimental.</p>
  8.         <p>Fotográficamente de estilo aun no concreto, pero con buen gusto y amplio conocimiento de las técnicas y cachivaches fotográficos.</p>
  9.         Le podrás encontrar en:
  10.         <ul class="lista-normal">
  11.             <li><a href="http://www.flickr.com/photos/javier-del-pozo/">Flickr</a></li>
  12.             <li><a href="http://500px.com/phileras">500px</a></li>
  13.             <li><a href="http://www.mixcloud.com/javier-del-pozo-fernandez/">Mixcloud</a></li>
  14.         </ul>
  15.         </div>
  16.         </span>
  17.         <span class="album2">      
  18.         <img src="sideral.jpg" class="imagen_album_artista_staff">
  19.         <h1 class="titulo_album">[Sideral] Raúl Villalón</h1>
  20.         <p>La mayor parte del tiempo lo dedico a la fotografía y time lapse, sin embargo, desde adolescente, escucho, y en ocasiones produzco música.</p>
  21.         <p>Mis influencias son amplias y abundantes, a nivel visual mencionaría la película Taxi Driver y fotógrafos contemporáneos como Nicolas Bouvier o James Yeung. <a class="aTag" href="javascript:;">Leer más </a></p>
  22.         <div class="leer-mas"><p>A nivel musical, son muchos los que han dejado un intenso poso como Orbital, Ladytron, Paul Kalkbrenner, Pan Sonic, Richie Hawtin...</p>
  23.         <p>Actualmente estoy involucrado en varios proyectos, la mayoría relacionados con la fotografía o video, siendo el último la creación de un pack de loops para VJ´s y una aplicación para dispositivos móviles, PictureSight, en la que se muestra el trabajo de fotógrafos consolidados.</p>
  24.         <p>Disfruta, y bienvenido a mi viaje!</p>
  25.         Me podrás encontrar en:
  26.         <ul class="lista-normal">
  27.             <li><a href="http://www.flickr.com/photos/raulvillalon/" alt="Raúl Villalón en Flickr">Flickr</a></li>
  28.             <li><a href="http://www.pond5.com/artist/Sideral" alt="Raúl Villalón en Pond5">Pond5</a></li>
  29.             <li><a href="https://vimeo.com/raulvillalon" alt="Raúl Villalón en Vimeo">Vimeo</a></li>
  30.         </ul>
  31.         </div>
  32.         </span>
  33.         <span class="licencia">¿Quieres formar parte de nuestro equipo? <strong><a href="contacto.php">contacta con nosotros</a></strong></span>
  34.       </div>

Ahora utilizamos jquery:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. // Primero que nada esperar a que el documento este listo $().ready(...
  3. $().ready(function(e) {
  4.     // Asignamos el evento toggle a todos los elementos que tengan el class .aTag
  5.     // Este evento lo que hace es una especie de switch, apagado-encendido.
  6.     // Es decir al primer click hace ciertas instrucciones y al segundo click otras instrucciones
  7.     $(".aTag").toggle(
  8.         //Prendido: tomamos el indice del elemento .aTag clickeado,
  9. //luego con la función eq(index), le decimos cual elemento debe mostrar con la función toggle
  10.         function(){
  11.             var i = $(".aTag").index(this);
  12.             $(this).html("Leer menos ►");
  13.             $(".leer-mas").eq(i).toggle(500);
  14.             },
  15.         //Apagado: IGualmente tomamos el indice del elemento .aTag clickeado,
  16. //luego con la función eq(index), le decimos cual elemento debe ocultar con la función toggle
  17.         function(){
  18.             var i = $(".aTag").index(this);
  19.             $(this).html("Leer más ►");
  20.             $(".leer-mas").eq(i).toggle(500);
  21.             }
  22.     );
  23. });
  24. </script>

Todo esto se puede optimizar aún más.

Espero te sirva de ayuda.
  #4 (permalink)  
Antiguo 15/01/2013, 09:50
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Lio con el "Leer más"

Muchas gracias Raúl pero al final me he decidido por el jQuery Collapse, funciona bien y se puede configurar la velocidad de apertura. Lo que no se es si lo estoy utilizando bien, podrás ver como lo he dejado en el post anterior.

¿¿Podria optimizarse mas??

Saludos

Edito-----------------------------------

También puedes comprobar comom funciona actualmente en > http://bi.loslocostambientienenblog.com/staff.html

Lo unico que no cambia el texto "leer más" por "leer menos" pero me gusta como funciona

Última edición por MindPaniC; 15/01/2013 a las 09:56
  #5 (permalink)  
Antiguo 15/01/2013, 10:16
 
Fecha de Ingreso: julio-2008
Mensajes: 91
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: Lio con el "Leer más"

Si funciona bien con jQuery Collapse.

Para que cambie prueba lo siguiente:

A todos tus links agregales atributo class="aTag"
<h3><a class="aTag" href="#">Leer más ►</a></h3>


Código Javascript:
Ver original
  1. <script>
  2. $().ready(function(e) {
  3.     // Asigna el evento toggle a los elementos con atributo class "aTag" para cambiar su nombre.
  4.     $(".aTag").toggle(
  5.         function(){
  6.             $(this).html("Leer menos ►");
  7.             },
  8.         function(){
  9.             $(this).html("Leer más ►");
  10.             }
  11.     );
  12. });
  13. </script>

No debería haber conflicto.
Lo pruebas y nos comentas como te fue.
  #6 (permalink)  
Antiguo 15/01/2013, 11:04
MindPaniC
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Lio con el "Leer más"

Hola de nuevo Raúl,

El enlace cambia pero no se expande ni se contrae el texto, no funciona el collapse.

Se podria solucionar??

Etiquetas: funcion, html, javascript, js, lio
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 13:56.