Respostas:
Por que não procurar primeiro na página (curta) dos seletores?
Aqui está: o :eq()
operador. É usado exatamente como get()
, mas retorna o objeto jQuery.
Ou você pode usar a .eq()
função também.
.eq()
é mais apropriado para a pergunta do OP. :eq()
é usado dentro do parâmetro string para $
, enquanto que .eq()
é um método em um objeto jQuery existente.
$('select').find('option').eq(n)
basicamente ignorará o agrupamento e obterá todas as opções como um todo. Se você quiser por grupo, algo como isto é necessário:$('select').find('optgroup').each(function() { $(this).find('option').eq(n)...; })
Você pode usar o seletor : eq , por exemplo:
$("td:eq(2)").css("color", "red"); // gets the third td element
Ou a função eq (int) :
$("td").eq(2).css("color", "red");
Além disso, lembre-se de que os índices são baseados em zero.
:nth()
seletor - para não confundir com:nth-child()
se você tiver controle sobre a consulta que cria o objeto jQuery, use :eq()
$("div:eq(2)")
Se você não tiver controle sobre ele (por exemplo, ele está sendo passado de outra função ou algo assim), use .eq()
var $thirdElement = $jqObj.eq(2);
Ou se você quiser uma seção deles (digamos, o terceiro, quarto e quinto elementos), use .slice()
var $third4th5thElements = $jqObj.slice(2, 5);
.eq()
vez de :eq()
realmente. Leve aumento de desempenho.
.eq () -Um número inteiro indicando a posição baseada em 0 do elemento.
Ex:
Considere uma página com uma lista simples:
<ul>
<li>list item 1</li>
<li>list item 2</li>
<li>list item 3</li>
<li>list item 4</li>
</ul>
Podemos aplicar esse método ao conjunto de itens da lista:
$( "li" ).eq( 2 ).css( "background-color", "red" );
Se você já possui o objeto jquery em uma variável, também pode tratá-lo como uma matriz indexada normal, sem o uso do 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");
}
Embora o exemplo acima não seja útil, ele representa como você pode tratar objetos criados pelo jquery como matrizes indexadas.
<select>
elementos, e você quer o elemento combobox selecionado, uso$(row).val();
Se eu entendi sua pergunta corretamente, você sempre pode agrupar a função get da seguinte maneira:
var $someJqueryEl = $($('.myJqueryEls').get(3));
eq()
você oferece gratuitamente.
Se você deseja buscar um elemento / nó ou tag em loop específico, por exemplo,
<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>
Portanto, a partir do código acima, o loop é executado e queremos que um campo específico seja selecionado. Temos que usar a seleção jQuery que pode selecionar apenas o elemento esperado do loop acima, para que o código seja
$('.weekdays:eq(n)');
por exemplo
$('.weekdays:eq(0)');
bem como por outro método
$('.weekday').find('p').first('.weekdays').next()/last()/prev();
mas o primeiro método é mais eficiente quando HTML <tag>
possui um nome de classe exclusivo.
NOTA: O segundo método é usado quando não há nome de classe no elemento ou nó de destino.
para mais, siga https://api.jquery.com/eq/
Para iterações, o uso de um seletor não parece fazer nenhum 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>
Quando executado, há dois itens na lista ordenada que mostram Primeiro e Terceiro. O segundo estava escondido.
$(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()
vez de:eq()
?