Foros del Web » Programando para Internet » Jquery »

jquery :nth-child()

Estas en el tema de jquery :nth-child() en el foro de Jquery en Foros del Web. Hola! necesito implementar este método de selección de jquery en un proyecto. Básicamente tengo una lista de items que necesito que cada x elementos se ...
  #1 (permalink)  
Antiguo 10/03/2011, 02:14
 
Fecha de Ingreso: octubre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 3
jquery :nth-child()

Hola!

necesito implementar este método de selección de jquery en un proyecto.

Básicamente tengo una lista de items que necesito que cada x elementos se genere una clase para ese elemento en concreto. Esto es, en una <ul> tengo 60 <li> y cada 20 <li> quiero asignar la clase .break.

Pensé en este método a través de jquery, pero no sé implementarlo bien, alguien puede echarme un cable a crear esta función, seguro que es muy básica pero no me aclaro!

Tiene que ser algo así, verdad? Es que no termina de funcionar:

$("#item-works:nth-child(20n)").addClass("break");

El método funciona con las mismas reglas que lo hace la regla en CSS3 - http://www.w3.org/TR/css3-selectors/#nth-child-pseudo

http://api.jquery.com/nth-child-selector/

Muchas gracias!
  #2 (permalink)  
Antiguo 10/03/2011, 04:22
 
Fecha de Ingreso: octubre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 3
Respuesta: jquery :nth-child()

Este es el código que estoy usando:

function addBreakClass() {
$("#item-works li").removeClass("break");
$("#item-works li:nth-child(20n)").addClass("break");
}

addBreakClass();

var $paneTarget = $('#list-works');
$('.works-filters li a').click(function(){
var $target = $paneTarget.find('li:eq(1)');
$paneTarget.stop().scrollTo( $target , 800 );
addBreakClass();
});

Todo forma parte de un sistema de filtrado en un panel que hace slide. Cuando el usuario realiza una parte del slide (vertical) y este se encuentra a mitad del conteniod y filtra por tipos de trabajos lo envío de nuevo al principio, si no es así no vería algunos trabajos que se quedarían en la parte de arriba por el overflow. Y ahí lanzo de nuevo la función....per claro, meintras te escribo acabo de caer en que realmente cuando se filtran los items dejan de verse con lo cual quizá tenga que comprobar primero si son visibles y luego aplicar la función addBreakclass();

Cómo comprobaríais la visibilidad de un elemento que se oculta con un display:none y luego lanzar la funcion para estos? No consigo ver bien tampoco la estructura del if para comprobar esto.
  #3 (permalink)  
Antiguo 10/03/2011, 09:51
 
Fecha de Ingreso: octubre-2006
Mensajes: 199
Antigüedad: 18 años
Puntos: 3
Respuesta: jquery :nth-child()

He modificado mi código, pero no consigo hacerlo funcionar. Alguna sugerencia? Soy pésimo programando, lo siento:

function addBreakClass() {
var visibles = $("#item-works li").is(':visible');
if ( $('#item-works li').is(':visible')){

$("#item-works li").removeClass("break");
$(visibles+":nth-child(20n)").addClass("break");
}

}

addBreakClass();

var $paneTarget = $('#list-works');
$('.works-filters li a').click(function(){
var $target = $paneTarget.find('li:eq(1)');
$paneTarget.stop().scrollTo( $target , 800 );
addBreakClass();
});

Etiquetas: Ninguno
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 06:33.