Eu tenho uma pilha de divs que pertencem a uma classe específica, digamos tabs. e a estrutura semântica se parece com isso:
<div class = "tabs" >_______</div>
<div class = "tabs" >_______</div>
<div class = "tabs" >_____</div>
É fácil acessar o primeiro e o último elemento da div, como
$(".tabs:first") or
$(".tabs:last")
mas chegar ao segundo (e supondo que existam várias outras divs no interior, então todas as divs, exceto a primeira ou a última), parecem gerar um erro de sintaxe para mim, como:
$(".tabs:second") or $(".tabs:third")
não funcione de maneira esperada.
Alguém pode identificar o que está errado aqui?
Respostas:
3 para resposta № 1Dê uma olhada no jQuery :first
documentação do seletor:
http://api.jquery.com/first-selector/
Você notará que esta é uma extensão jQuery e não faz parte da especificação CSS. Também que :first
é equivalente a :eq(0)
, isso significa que se você deseja obter o segundo elemento, pode fazê-lo com :eq(1)
.
Se você não precisa de um filtro no seletor CSS, pode simplesmente obter o elemento com o método .eq como isso:
$(".tabs").eq(0) // get the first element
$(".tabs").eq(1) // get the second element
$(".tabs").eq(2) // get the third element
$(".tabs").eq(-2) // get the second to last element
$(".tabs").eq(-1) // get the last element
6 para resposta № 2
Tente usar o eq()
seletor, observe que o índice é baseado em zero:
$(".tabs:eq(1)");
6 para resposta № 3
Existem duas maneiras de fazer isso, usando o .eq()
método ou o :eq()
seletor.
O método .eq ():
A forma como a documentação do jQuery recomenda que você faça isso é usando o .eq()
método.
// eq() is zero-based, so this would get the second element
$(".tabs").eq(1)
Um recurso útil é que .eq()
também pode receber um número negativo, o que faz com que a função comece do fim.
// This would take the second element from the end
$(".tabs").eq(-2);
O seletor: eq ()
jQuery também fornece um :eq()
seletor, que basicamente funciona da mesma maneira que o .eq()
método faz. Então, você também pode fazer isso:
$(".tabs:eq(1)")
Observe que, embora funcione, é preferível usar o .eq()
método em vez do seletor. O método tem melhor desempenho em navegadores modernos e o :eq()
O seletor não suporta números negativos, por isso é um pouco mais limitado.