Foros del Web » Programando para Internet » Jquery »

Aplicar estilo a nodo sin hijos - Jquery

Estas en el tema de Aplicar estilo a nodo sin hijos - Jquery en el foro de Jquery en Foros del Web. Tengo una lista de categorias con subcategorias, la idea es reconocer que subcategoría tiene tiene hijos para aplicarle un estilo a su categoria padre... acontinuación ...
  #1 (permalink)  
Antiguo 01/10/2011, 15:37
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 9 meses
Puntos: 0
Aplicar estilo a nodo sin hijos - Jquery

Tengo una lista de categorias con subcategorias, la idea es reconocer que subcategoría tiene tiene hijos para aplicarle un estilo a su categoria padre... acontinuación el html:

Código HTML:
<ul class="top_level_categories">
    <li >
                                       Notebook
        <ul class="second_level_categories">
               <li class="wpsc_category_55">
                       accesories    
              </li>  
         </ul>
   </li>
 </ul>
 <ul class="top_level_categories">
   <li>Iphones
          <ul class="second_level_categories">
 
         </ul>
   </li>
 </ul> 

Codigo Javascript:
Código PHP:
$(document).ready(function(){

 
//Hide (Collapse) the toggle containers on load
 
$(".second_level_categories").hide();     
//Aca sé cuantos hijos tiene el nodo "second_level_categories"
     
if ( $('.second_level_categories').children().size() > ) {
//Aca estoy fallando porque puedo seleccionar al nodo top_level:categories 
//pero sin ser consciente de si tiene subcategorias o no

            
$('.second_level_categories'this).parent().parent().toggleClass("active");
            }


 
//Switch the "Open" and "Close" state per click then slide up/down (depending on open/close state)
 
$(".top_level_categories").click(function () {
 $(
this).toggleClass("active")
     $(
".second_level_categories"this).slideToggle("slow");
 });

}); 
  #2 (permalink)  
Antiguo 01/10/2011, 20:58
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Aplicar estilo a nodo sin hijos - Jquery

Código PHP:
$('.second_level_categories').filter(function(){
    return $(
this).children().length==0;    
}).
parents('ul').addClass("active"); 
ya encontré la solucion gracias!!

Última edición por martuanez; 01/10/2011 a las 22:18
  #3 (permalink)  
Antiguo 03/10/2011, 06:06
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Aplicar estilo a nodo sin hijos - Jquery

Código Javascript:
Ver original
  1. $('.second_level_categories:not(:has(li))').addClass("active");


o con :empty pero fijate que no tenga espacios <ul></ul>
Código Javascript:
Ver original
  1. $('.second_level_categories:empty').addClass('active');

Última edición por Dany_s; 03/10/2011 a las 06:17
  #4 (permalink)  
Antiguo 03/10/2011, 06:58
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Aplicar estilo a nodo sin hijos - Jquery

muchas gracias! aunque en tus ejemplos faltaría aplicarle el estilo al padre top_level_categories que me dio bastante trabajo, jeje gracias!!!
  #5 (permalink)  
Antiguo 03/10/2011, 07:20
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 4 meses
Puntos: 65
Respuesta: Aplicar estilo a nodo sin hijos - Jquery

ah claro yo le agrego la clase active al li vacio

pero a los ul padres como lo tienes anteriormente
$('.second_level_categories:empty').parents('ul'). addClass('active');
  #6 (permalink)  
Antiguo 03/10/2011, 15:28
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Aplicar estilo a nodo sin hijos - Jquery

el problema del empty es que si tiene un salto de linea ya no funciona, no es muy practico...
decis que es muy chancha mi solucion?

Etiquetas: children, parent
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 02:58.