Respuestas:
¿Por qué no navegar primero por la página de selectores (cortos)?
Aquí está: el :eq()
operador. Se usa igual que get()
, pero devuelve el objeto jQuery.
O también puedes usar la .eq()
función.
.eq()
es más apropiado para la pregunta del OP. :eq()
se usa dentro del parámetro string para $
, mientras que .eq()
es un método en un objeto jQuery existente.
$('select').find('option').eq(n)
básicamente ignorará la agrupación y obtendrá todas las opciones como un todo. Si lo desea por grupo, es necesario algo como esto:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Puede usar el selector : eq , por ejemplo:
$("td:eq(2)").css("color", "red"); // gets the third td element
O la función eq (int) :
$("td").eq(2).css("color", "red");
Además, recuerde que los índices están basados en cero.
:nth()
selector, que no debe confundirse con:nth-child()
si tiene control sobre la consulta que construye el objeto jQuery, use :eq()
$("div:eq(2)")
Si no tiene control sobre él (por ejemplo, se pasa de otra función o algo), use .eq()
var $thirdElement = $jqObj.eq(2);
O si desea una sección de ellos (digamos, los elementos tercero, cuarto y quinto), use .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()
lugar de en :eq()
realidad. Ligero aumento de rendimiento.
.eq () -Un número entero que indica la posición del elemento basada en 0.
Ex:
Considere una página con una lista simple:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Podemos aplicar este método al conjunto de elementos de la lista:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Si ya tiene el objeto jquery en una variable, también puede tratarlo como una matriz indexada normal, sin el uso de jquery:
var all_rows = $("tr");
for(var i=0; i < all_rows.length; i++){
var row = all_rows[i];
//additionally, you can use it again in a jquery selector
$(row).css("background-color","black");
}
Aunque el ejemplo anterior no es útil de ninguna manera, representa cómo puede tratar los objetos creados por jquery como matrices indexadas.
<select>
elementos, y desea el elemento del cuadro combinado seleccionado, use$(row).val();
Si entiendo su pregunta correctamente, siempre puede ajustar la función get de esta manera:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()
que te ofrece de forma gratuita.
Si desea obtener un elemento / nodo particular o una etiqueta en bucle, por ejemplo,
<p class="weekday" data-today="monday">Monday</p>
<p class="weekday" data-today="tuesday">Tuesday</p>
<p class="weekday" data-today="wednesday">Wednesday</p>
<p class="weekday" data-today="thursday">Thursday</p>
Entonces, desde el bucle de código anterior se ejecuta y queremos seleccionar un campo particular para eso, tenemos que usar la selección jQuery que puede seleccionar solo el elemento esperado del bucle anterior, por lo que el código será
$('.weekdays:eq(n)');
p.ej
$('.weekdays:eq(0)');
así como por otro método
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
pero el primer método es más eficiente cuando HTML <tag>
tiene un nombre de clase único.
NOTA: El segundo método se usa cuando no hay un nombre de clase en el elemento o nodo de destino.
para más información, siga https://api.jquery.com/eq/
Sin embargo, para las iteraciones, usar un selector no parece tener sentido:
var some = $( '...' );
for( i = some.length -1; i>=0; --i )
{
// Have to transform in a jquery object again:
//
var item = $( some[ i ] );
// use item at will
// ...
}
<html>
<head></head>
<body>
<script type="text/javascript"
src="http://code.jquery.com/jquery-2.1.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$('li:eq(1)').hide();
});
</script>
<ol>
<li>First</li>
<li>Second</li>
<li>Third</li>
</ol>
</body>
</html>
Cuando se ejecuta, hay dos elementos en la lista ordenada que se muestran, Primero y Tercero. El segundo estaba oculto.
$(function(){
$(document).find('div').siblings().each(function(){
var obj = $(this);
obj.find('div').each(function(){
var obj1 = $(this);
if(!obj1.children().length > 0){
alert(obj1.html());
}
});
});
});
<div id="2">
<div>
<div>
<div>XYZ Pvt. Ltd.</div>
</div>
</div>
</div>
<div id="3">
<div>
<div>
<div>ABC Pvt Ltd.</div>
</div>
</div>
</div>
.eq()
eso en lugar de:eq()
?