Pregunta ¿Cómo seleccionar el penúltimo (último) elemento li de la lista ul en jQuery?


Si tengo algo así:

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

y necesito agregar Class "extra" al penúltimo (por ejemplo, si tengo 5 elementos li la clase extra se agregará al 4 ° elemento li) de la lista ul.

entonces el resultado en este caso será:

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="extra">4</li>
<li>5</li>
</ul>

Gracias por adelantado


10
2017-08-16 18:03


origen


Respuestas:


$("li:last").prev("li").addClass("class-to-add")

http://api.jquery.com/prev/

http://api.jquery.com/last-selector/


11
2017-08-16 18:08



Si solo hay una lista, solo pase un índice negativo al eq()[docs] método.

$("ul li").eq(-2).addClass("extra");

Parece que estás usando una versión anterior de jQuery.

Aquí hay un ejemplo eso lo muestra trabajando en jQuery 1.3.2.


6
2017-08-16 18:21



$("ul li").last().prev().addClass("foo");

3
2017-08-16 18:04



Como todos tus <li> los elementos son hermanos, y no hay otro elemento entre ellos, puedes usar último() seguido por prev ():

$("li").last().prev().addClass("extra");

Si hubiera otros elementos intermedios, tendrías que usar prevAll () en lugar:

$("li").last().prevAll("li").first().addClass("extra");

1
2017-08-16 18:05



$('li').eq($('li').length-2).addClass("extra")

1
2017-08-16 18:06



var items = $("ul").children();
var penultimate = items.eq(items.length - 2);
penultimate.addClass("extra");

0
2017-08-16 18:05



Puede usar lo siguiente:

$('li').eq($('ul li').length - 2);

Demostración de JS Fiddle.

Referencias


0
2017-08-16 18:05