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

Problema con childs y parents

Estas en el tema de Problema con childs y parents en el foro de Frameworks JS en Foros del Web. Buenas, Tengo un problema de padres e hijos que no consigo resolver por más vueltas que le doy, y no parece dificil a priori, pero ...
  #1 (permalink)  
Antiguo 18/02/2012, 11:24
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Problema con childs y parents

Buenas,

Tengo un problema de padres e hijos que no consigo resolver por más vueltas que le doy, y no parece dificil a priori, pero no lo consigo

Resulta que tengo un listado de productos <ul> </ul> cada <li> es un producto diferente. Dentro de cada <li> existe un botón para "sugerir", que lo único que hace es ocultar 3 divs y mostrar uno que está oculto, y si vuelve a pulsar lo deja todo como estaba antes.
Esto me funciona de forma individual para un producto, pero al haber más productos no consigo individualizar para que solo afecte al producto al cual he clicado.

Mi problema está a la hora de aplicar los efectos de ocultar y mostrar.

Estos son los efectos:

Código Javascript:
Ver original
  1. $(".sugerir").click(function () {
  2.         if ($(".sugerir").hasClass('activo')){
  3.             $(".sugerir_categoria").fadeOut("fast", "linear");
  4.             $(".info1").delay(300).fadeIn("fast", "linear");
  5.             $(".info2").delay(300).fadeIn("fast", "linear");
  6.             $(".info3").delay(300).fadeIn("fast", "linear");
  7.             $(".sugerir#oferta1").toggleClass("activo");
  8.         }else{
  9.             $(this).toggleClass("activo");
  10.             $(".info1").fadeOut("fast", "linear");
  11.             $(".info2").fadeOut("fast", "linear");
  12.             $(".info3").fadeOut("fast", "linear");
  13.             $(".sugerir_categoria").delay(300);
  14.             $(".sugerir_categoria").fadeIn("fast", "linear");
  15.         }
  16.     });

Y esta es la estructura html, he eliminado el contenido de las etiquetas para simplificar.

Código HTML:
Ver original
  1. <ul class="listado" id="items">
  2.     <li id="ofer1" class="producto">       
  3.     <div>
  4.         <span class="category">
  5.             <span class="sugerir" id="ofer1"></span>
  6.         </span>
  7.     </div>
  8.     <div class="content_producto">
  9.         <a class="titulo"></a>
  10.         <p class="descripcion"></p>    
  11.        
  12.         <!-- Esta es la capa que se MUESTRA -->
  13.         <div class="sugerir_categoria" id="ofer1"></div>
  14.  
  15.         <!-- Esta son las 3 capas que se OCULTAN -->       
  16.         <div class="info1"></div>
  17.         <div class="info2"></div>
  18.         <div class="info3"></div>
  19.     </div>
  20.     </li>
  21.    
  22.     <li id="ofer2" class="producto">
  23.     ....
  24.     </li>
  25. </ul>

Debo cambiar algo del html para que sea más fácil de identificarlo con jquery?

¿Sabéis cómo debo hacerlo?

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 19/02/2012, 04:52
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Problema con childs y parents

Buenas,

He conseguido solucionar esa parte de la siguiente forma, además como los datos los cargo via Ajax, he tenido que aplicar el live para que me funcionase.

Espero que sirva a alguien que se encuentre alguna vez con algun problema similar.

Código Javascript:
Ver original
  1. $(".sugerir").live('click',function(){
  2.         var OferId = $(this).attr('id');
  3.        
  4.         if ($("#"+OferId+".sugerir").hasClass('activo')){
  5.             $("#"+OferId+".content_producto .sugerir_categoria").fadeOut("fast", "linear");
  6.             $("#"+OferId+".content_producto .info1").delay(300).fadeIn("fast", "linear");
  7.             $("#"+OferId+".content_producto .info2").delay(300).fadeIn("fast", "linear");
  8.             $("#"+OferId+".content_producto .info3").delay(300).fadeIn("fast", "linear");
  9.             $("#"+OferId+".sugerir").toggleClass("activo");
  10.         }else{
  11.             $("#"+OferId+".sugerir").toggleClass("activo");
  12.             $("#"+OferId+".content_producto .info1").fadeOut("fast", "linear");
  13.             $("#"+OferId+".content_producto .info2").fadeOut("fast", "linear");
  14.             $("#"+OferId+".content_producto .info3").fadeOut("fast", "linear");
  15.             $("#"+OferId+".content_producto .sugerir_categoria").delay(300);
  16.             $("#"+OferId+".content_producto .sugerir_categoria").fadeIn("fast", "linear");
  17.         }
  18.     });

Ahora abro otro post con un problema que me ha salido a raiz de solucionar esto

Gracias!

Etiquetas: funcion, html, jquery, parents
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 21:50.