2011-01-06 26 views
5

que tengo una lista de imágenes/enlaces de texto,jQuery: seleccionar los 4 últimos elementos de la lista

<ul> 
<li>link 1</li> 
<li>link 2</li> 
<li>link 3</li> 
<li>link 4</li> 

<li>link 5</li> 
<li>link 6</li> 
<li>link 7</li> 
<li>link 8</li> 
</ul> 

y la lista Estilo en mi archivo css,

li { 
    float:left; 
    margin:0px 5px 5px 0px; 
} 

pero luego Quiero que se muestren los últimos 4 elementos de la lista sin el espacio de 5 píxeles en su margen inferior. así que me gustaría usar jQuery para seleccionar estos últimos 4 elementos y cambiar su estilo CSS a marginBottom: 0px;

El problema es que esta es la forma de jQuery selecciona el último elemento:

li:last 

pero ¿qué pasa con el último 4? o tal vez los últimos 5 o 6?

Gracias.

+0

sí lo hace! gracias por señalar! :-) – laukok

Respuesta

21
$('li').slice(-4).css('color', 'red') 

Example

+0

el código anterior devolverá los últimos cinco elementos, ya que slice está basado en 0. – superUntitled

+0

Interesante. ¿Has probado el ejemplo? Parece estar basado en 0 comenzando desde el principio. '$ ('li'). slice (-4) .length' >> 4 –

+0

@super, selecciona los últimos cuatro porque es negativo. Entonces cuenta 4 desde el final ... –

0

Creo que se puede probar este $("li").slice(-5);

+1

debería ser -4 (* según OP *) –

+0

El número no importa, ¿o sí? –

+0

@Jishny, en realidad no ... * se dejó llevar porque de los dos métodos sugeridos, uno que usa un cero necesita un número diferente que este método. * –

1

se puede utilizar el método de filtro

var elems = $('ul li'); 
elems.filter(function(idx){ 
    /* we use 5 because the index starts at 0 */ 
    return idx > elems.length-5; 
}).css('margin-bottom','0px'); 

Demostración: http://www.jsfiddle.net/Cw3uu/

+0

muchas gracias! :-) – laukok

1
$('li').slice(-4).addClass('last-li-items'); 

Luego, en el CSS:

.last-li-items { 
    margin-bottom:0 !important; 
} 
+0

muchas gracias! :-) – laukok

2
var e = $('li').slice(-4).css('margin-bottom', '0px');  

Demo

+0

muchas gracias! :-) – laukok

1

Puede utilizar .slice()

$('li').slice(-4) 

O bien, puede utilizar jQuery :gt()

var size = $('li').size(); 
$('li:gt('+(size-5)+')'); 
+0

debería ser -4 (* OP quiere los últimos 4 *) –

+0

@Gaby: "¿pero qué pasa con los últimos 4?o tal vez los últimos 5, o 6? " –

+0

gracias Gaby por esto! :-) – laukok

Cuestiones relacionadas