Risposte:
Perché non navigare prima nella pagina dei selettori (brevi)?
Eccolo: l' :eq()
operatore. È usato esattamente come get()
, ma restituisce l'oggetto jQuery.
Oppure puoi usare .eq()
anche la funzione.
.eq()
è più appropriato per la domanda del PO. :eq()
viene utilizzato all'interno del parametro string per $
, mentre .eq()
è un metodo su un oggetto jQuery esistente.
$('select').find('option').eq(n)
fondamentalmente ignorerà il raggruppamento e otterrà tutte le opzioni nel loro insieme. Se lo vuoi per gruppo, è necessario qualcosa del genere:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
È possibile utilizzare il selettore : eq , ad esempio:
$("td:eq(2)").css("color", "red"); // gets the third td element
O la funzione eq (int) :
$("td").eq(2).css("color", "red");
Inoltre, ricorda che gli indici sono a base zero.
:nth()
selettore - da non confondere con:nth-child()
se si ha il controllo sulla query che crea l'oggetto jQuery, utilizzare :eq()
$("div:eq(2)")
Se non hai il controllo su di esso (ad esempio, viene passato da un'altra funzione o qualcosa del genere), quindi utilizzare .eq()
var $thirdElement = $jqObj.eq(2);
O se ne vuoi una sezione (diciamo, il terzo, il quarto e il quinto elemento), usa .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()
invece di :eq()
effettivamente. Leggero aumento delle prestazioni.
.eq () -Un numero intero che indica la posizione in base 0 dell'elemento.
Ex:
Considera una pagina con un semplice elenco su di essa:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Possiamo applicare questo metodo all'insieme di voci di elenco:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Se hai già l'oggetto jquery in una variabile, puoi anche trattarlo come un normale array indicizzato, senza l'uso di 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");
}
Sebbene l'esempio sopra non sia utile in alcun modo, rappresenta come è possibile trattare gli oggetti creati da jquery come array indicizzati.
<select>
elementi e si desidera l'elemento combobox selezionato, utilizzare$(row).val();
Se capisco correttamente la tua domanda, puoi sempre semplicemente avvolgere la funzione get in questo modo:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()
ti dà gratuitamente.
Se vuoi recuperare un particolare elemento / nodo o tag in loop per es
<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>
Quindi, dal ciclo di codice dall'alto viene eseguito e vogliamo selezionare un campo particolare per questo, dobbiamo usare la selezione jQuery che può selezionare solo l'elemento in attesa dal ciclo sopra, quindi il codice sarà
$('.weekdays:eq(n)');
per esempio
$('.weekdays:eq(0)');
così come con altri metodi
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
ma il primo metodo è più efficiente quando HTML <tag>
ha un nome di classe univoco.
NOTA: il secondo metodo viene utilizzato quando non è presente un nome di classe nell'elemento o nel nodo di destinazione.
per di più segui https://api.jquery.com/eq/
Per le iterazioni l'uso di un selettore non sembra avere alcun senso però:
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>
Quando viene eseguito, ci sono due elementi nell'elenco ordinato che mostrano, Primo e Terzo. Il secondo era nascosto.
$(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()
invece di:eq()
?