Seleccione Enésima hermano anterior en jQuery?
-
06-07-2019 - |
Pregunta
Estoy tratando de configurar mi selector de jQuery, pero no estoy exactamente seguro de cómo debo escribir.
Tengo una lista desordenada que se ve algo como esto:
<ul>
<li>something</li>
<li>something</li>
<li>something</li>
<li>something</li>
<li class="last">something</li>
</ul>
Ahora sé que si quiero seleccionar el último niño que puede hacer que, mediante el uso de "ul li.la última" o "ul.li:last", pero dicen que si yo quería que el segundo de la última, o de terceros, o 20?Ahora lo voy a hacer?
Solución
Utiliza eq
:
$('ul li').eq(X);
Donde X es un índice basado en 0 de las cuales el elemento deseado.También se podría utilizar el selector de formulario:
$('ul li:eq(X)');
Y también se puede lograr un resultado similar mediante el uso de nth-child
:
$('ul li:nth-child(X)');
La documentación tiene que decir acerca de la diferencia entre nth-child
y eq
:
Mientras :eq(índice) coincide con un solo elemento, esto corresponde a más de uno:Uno para cada uno de los padres con el índice.Múltiples para cada uno de los padres con par, impar, o una ecuación.El índice especificado es uno indexados, en contraste a :eq (), que empieza desde cero.
Así que el hacer $('ul li').eq(19);
se obtendrá el solo 20 igualó elemento de la consulta (así que si hay más de una lista en el documento que esto no te "todos 19 los niños", mientras que $('ul li:nth-child(20)');
obtendría cada uno de los 20 igualó el elemento de la lista de cada <ul>
en el documento.
EDITAR:
Para hacer algo como "la segunda a la última", la misma manera de hacerlo sería:
var $ul = $('#mylist > li');
var $el = $ul.eq($ul.length-2);
Pero probablemente, usted debe hacer una comprobación para asegurarse de longitud-2 no es menor que 0.
Otros consejos
¿Quieres el tercero del último?
var $ul = $("ul li");
$ul.find(":eq(" + Math.max(0, $ul.length - 3) + ")");
Explicación rápida: La longitud de $ ul (que es un objeto jQuery) es cuántas li se encuentran. Entonces puede usar eso junto con & Quot;: eq (n) & Quot; selector para obtener el li en el índice deseado.
Usé Math.max en caso de que la lista fuera demasiado corta (menos de 3 li's).
Esto también funcionará, pero obviamente no es la mejor manera:
var $ul = $("ul li:last").prev().prev();
Para el tercero y el vigésimo, puede hacer ul li: eq (3)
y ul li: eq (20)
. Para el penúltimo, es posible que pueda hacer algo con nth-child
opción de argumento ecuación
, aunque no estoy seguro.
alert($('ul li').eq(3).text());
Eso alertará al texto del tercer elemento de la lista.
El equipo de jQuery agregó esta función en la versión 1.9
Puede leer sobre ello en http://api.jquery.com/nth -last-child-selector /